Mercurial > hg > graal-jvmci-8
diff graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/ExecuteEvaluatedTest.java @ 11445:5fbd1ba4a5f3
Truffle-DSL: execute evaluated methods can now be declared using any type in the typesystem as parameters.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Wed, 28 Aug 2013 18:45:32 +0200 |
parents | 79041ab43660 |
children | 2b9fcffd6f36 |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/ExecuteEvaluatedTest.java Wed Aug 28 18:18:40 2013 +0200 +++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/ExecuteEvaluatedTest.java Wed Aug 28 18:45:32 2013 +0200 @@ -26,13 +26,8 @@ import com.oracle.truffle.api.*; import com.oracle.truffle.api.dsl.*; -import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.DoubleEvaluatedNodeFactory; -import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.EvaluatedNodeFactory; -import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.UseDoubleEvaluatedNodeFactory; -import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.UseEvaluatedNodeFactory; -import com.oracle.truffle.api.dsl.test.TypeSystemTest.ArgumentNode; -import com.oracle.truffle.api.dsl.test.TypeSystemTest.TestArguments; -import com.oracle.truffle.api.dsl.test.TypeSystemTest.ValueNode; +import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.*; +import com.oracle.truffle.api.dsl.test.TypeSystemTest.*; import com.oracle.truffle.api.frame.*; import com.oracle.truffle.api.nodes.*; @@ -104,4 +99,31 @@ } } + @Test + public void testEvaluatedGeneration() throws UnexpectedResultException { + TestRootNode<TestEvaluatedGeneration> root = TestHelper.createRoot(TestEvaluatedGenerationFactory.getInstance()); + + Assert.assertEquals(42, root.getNode().executeEvaluated1(null, 42)); + Assert.assertEquals(42, root.getNode().executeEvaluated2(null, 42)); + Assert.assertEquals(42, root.getNode().executeEvaluated3(null, 42)); + Assert.assertEquals(42, root.getNode().executeEvaluated4(null, 42)); + } + + @NodeChildren({@NodeChild("exp0")}) + abstract static class TestEvaluatedGeneration extends ValueNode { + + public abstract Object executeEvaluated1(VirtualFrame frame, Object value); + + public abstract Object executeEvaluated2(VirtualFrame frame, int value); + + public abstract int executeEvaluated3(VirtualFrame frame, Object value) throws UnexpectedResultException; + + public abstract int executeEvaluated4(VirtualFrame frame, int value) throws UnexpectedResultException; + + @Specialization + int call(int exp0) { + return exp0; + } + } + }