# HG changeset patch # User Andreas Woess # Date 1373892580 -7200 # Node ID 7f6580db1e889403398bea2188830af505647598 # Parent b221e31d7b0be05397eb89bb3f65f0780dd74056 Truffle: add assertions to verify the finalness of child fields. diff -r b221e31d7b0b -r 7f6580db1e88 graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/ReplaceTest.java --- a/graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/ReplaceTest.java Mon Jul 15 15:26:39 2013 +0200 +++ b/graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/ReplaceTest.java Mon Jul 15 14:49:40 2013 +0200 @@ -81,7 +81,7 @@ class TestRootNode extends RootNode { - @Children private ValueNode[] children; + @Children private final ValueNode[] children; public TestRootNode(ValueNode[] children) { this.children = adoptChildren(children); diff -r b221e31d7b0b -r 7f6580db1e88 graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java Mon Jul 15 15:26:39 2013 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java Mon Jul 15 14:49:40 2013 +0200 @@ -163,9 +163,11 @@ } else if (Node.class.isAssignableFrom(field.getType()) && field.getAnnotation(Child.class) != null) { kind = NodeFieldKind.CHILD; childOffsetsList.add(fieldOffsetProvider.objectFieldOffset(field)); + assert !Modifier.isFinal(field.getModifiers()) : "child field must not be final (\"" + field.getName() + "\", " + clazz + ")"; } else if (field.getType().isArray() && Node.class.isAssignableFrom(field.getType().getComponentType()) && field.getAnnotation(Children.class) != null) { kind = NodeFieldKind.CHILDREN; childrenOffsetsList.add(fieldOffsetProvider.objectFieldOffset(field)); + assert Modifier.isFinal(field.getModifiers()) : "children array field must be final (\"" + field.getName() + "\", " + clazz + ")"; } else { kind = NodeFieldKind.DATA; }