Mercurial > hg > truffle
changeset 9716:e0b95acd24ae
add check for final-ness and visibility of @Input and @Successor fields to NodeClass
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Wed, 15 May 2013 10:43:26 +0200 |
parents | badabdca0c53 |
children | 6623dda5fabb |
files | graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java |
diffstat | 1 files changed, 8 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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 {