# HG changeset patch # User Lukas Stadler # Date 1368607406 -7200 # Node ID e0b95acd24ae4f665fe72f55a8346ba61ea21cba # Parent badabdca0c5391186931f3f20bc957ac66743c34 add check for final-ness and visibility of @Input and @Successor fields to NodeClass diff -r badabdca0c53 -r e0b95acd24ae graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Wed May 15 10:43:03 2013 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Wed May 15 10:43:26 2013 +0200 @@ -190,9 +190,13 @@ if (field.isAnnotationPresent(Node.Input.class)) { assert !field.isAnnotationPresent(Node.Successor.class) : "field cannot be both input and successor"; if (INPUT_LIST_CLASS.isAssignableFrom(type)) { + assert Modifier.isFinal(field.getModifiers()) : "NodeInputList input field " + field + " should be final"; + assert !Modifier.isPublic(field.getModifiers()) : "NodeInputList input field " + field + " should not be public"; inputListOffsets.add(offset); } else { assert NODE_CLASS.isAssignableFrom(type) || type.isInterface() : "invalid input type: " + type; + assert !Modifier.isFinal(field.getModifiers()) : "Node input field " + field + " should not be final"; + assert Modifier.isPrivate(field.getModifiers()) : "Node input field " + field + " should be private"; inputOffsets.add(offset); } if (field.getAnnotation(Node.Input.class).notDataflow()) { @@ -200,9 +204,13 @@ } } else if (field.isAnnotationPresent(Node.Successor.class)) { if (SUCCESSOR_LIST_CLASS.isAssignableFrom(type)) { + assert Modifier.isFinal(field.getModifiers()) : "NodeSuccessorList successor field " + field + " should be final"; + assert !Modifier.isPublic(field.getModifiers()) : "NodeSuccessorList successor field " + field + " should not be public"; successorListOffsets.add(offset); } else { assert NODE_CLASS.isAssignableFrom(type) : "invalid successor type: " + type; + assert !Modifier.isFinal(field.getModifiers()) : "Node successor field " + field + " should not be final"; + assert Modifier.isPrivate(field.getModifiers()) : "Node successor field " + field + " should be private"; successorOffsets.add(offset); } } else {