Mercurial > hg > truffle
diff graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/PolymorphicTest.java @ 11320:80de3bbfa8b9
Truffle-DSL: fixed inconsistent children for polymorphic -> generic rewrites. (GRAAL-425)
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Fri, 16 Aug 2013 14:00:17 +0200 |
parents | 79041ab43660 |
children | e5b5a5cb0ac7 |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/PolymorphicTest.java Thu Aug 15 19:46:05 2013 +0200 +++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/PolymorphicTest.java Fri Aug 16 14:00:17 2013 +0200 @@ -31,6 +31,7 @@ import com.oracle.truffle.api.dsl.test.BinaryNodeTest.BinaryNode; import com.oracle.truffle.api.dsl.test.PolymorphicTestFactory.Node1Factory; import com.oracle.truffle.api.dsl.test.TypeSystemTest.TestRootNode; +import com.oracle.truffle.api.dsl.test.TypeSystemTest.ValueNode; import com.oracle.truffle.api.nodes.*; import com.oracle.truffle.api.nodes.NodeInfo.Kind; @@ -44,6 +45,8 @@ assertEquals("(int,boolean)", executeWith(node, 42, false)); assertEquals("(boolean,int)", executeWith(node, false, 42)); assertEquals(Kind.SPECIALIZED, node.getNode().getClass().getAnnotation(NodeInfo.class).kind()); + assertEquals(node.getNode(), node.getNode().getLeft().getParent()); + assertEquals(node.getNode(), node.getNode().getRight().getParent()); } @Test @@ -52,6 +55,8 @@ assertEquals("(int,boolean)", executeWith(node, 42, false)); assertEquals("(int,int)", executeWith(node, 42, 42)); assertEquals(Kind.POLYMORPHIC, node.getNode().getClass().getAnnotation(NodeInfo.class).kind()); + assertEquals(node.getNode(), node.getNode().getLeft().getParent()); + assertEquals(node.getNode(), node.getNode().getRight().getParent()); } @Test @@ -61,6 +66,8 @@ assertEquals("(boolean,boolean)", executeWith(node, true, false)); assertEquals("(int,int)", executeWith(node, 42, 42)); assertEquals(Kind.POLYMORPHIC, node.getNode().getClass().getAnnotation(NodeInfo.class).kind()); + assertEquals(node.getNode(), node.getNode().getLeft().getParent()); + assertEquals(node.getNode(), node.getNode().getRight().getParent()); } @Test @@ -71,6 +78,8 @@ assertEquals("(boolean,boolean)", executeWith(node, true, false)); assertEquals("(int,int)", executeWith(node, 42, 42)); assertEquals(Kind.GENERIC, node.getNode().getClass().getAnnotation(NodeInfo.class).kind()); + assertEquals(node.getNode(), node.getNode().getLeft().getParent()); + assertEquals(node.getNode(), node.getNode().getRight().getParent()); } @Test @@ -78,21 +87,30 @@ TestRootNode<Node1> node = TestHelper.createRoot(Node1Factory.getInstance()); assertEquals("(generic,generic)", executeWith(node, "", "")); assertEquals(Kind.GENERIC, node.getNode().getClass().getAnnotation(NodeInfo.class).kind()); + assertEquals(node.getNode(), node.getNode().getLeft().getParent()); + assertEquals(node.getNode(), node.getNode().getRight().getParent()); } @Test - public void testGenericPolymorphic() { + public void testGenericPolymorphic1() { TestRootNode<Node1> node = TestHelper.createRoot(Node1Factory.getInstance()); assertEquals("(boolean,int)", executeWith(node, false, 42)); - assertEquals("(int,boolean)", executeWith(node, 42, false)); + assertEquals("(boolean,boolean)", executeWith(node, false, false)); assertEquals("(generic,generic)", executeWith(node, "", "")); assertEquals(Kind.GENERIC, node.getNode().getClass().getAnnotation(NodeInfo.class).kind()); + /* Assertions for bug GRAAL-425 */ + assertEquals(node.getNode(), node.getNode().getLeft().getParent()); + assertEquals(node.getNode(), node.getNode().getRight().getParent()); } @SuppressWarnings("unused") @PolymorphicLimit(3) abstract static class Node1 extends BinaryNode { + public abstract ValueNode getLeft(); + + public abstract ValueNode getRight(); + @Specialization(order = 1) String add(int left, int right) { return "(int,int)";