112 message(kind, element, "Exception thrown during processing: %s", buf.toString());
113 }
114
115 boolean isNodeType(Element element) {
116 if (element.getKind() != ElementKind.CLASS) {
117 return false;
118 }
119 TypeElement type = (TypeElement) element;
120 Types types = processingEnv.getTypeUtils();
121
122 while (type != null) {
123 if (type.toString().equals("org.graalvm.compiler.graph.Node")) {
124 return true;
125 }
126 type = (TypeElement) types.asElement(type.getSuperclass());
127 }
128 return false;
129 }
130
131 @Override
132 public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
133 if (roundEnv.processingOver()) {
134 return false;
135 }
136
137 GraphNodeVerifier verifier = new GraphNodeVerifier(this);
138
139 for (Element element : roundEnv.getElementsAnnotatedWith(getTypeElement(NODE_INFO_CLASS_NAME))) {
140 scope = element;
141 try {
142 if (!isNodeType(element)) {
143 errorMessage(element, "%s can only be applied to Node subclasses", getSimpleName(NODE_INFO_CLASS_NAME));
144 continue;
145 }
146
147 AnnotationMirror nodeInfo = getAnnotation(element, getType(NODE_INFO_CLASS_NAME));
148 if (nodeInfo == null) {
149 errorMessage(element, "Cannot get %s annotation from annotated element", getSimpleName(NODE_INFO_CLASS_NAME));
150 continue;
151 }
152
|
112 message(kind, element, "Exception thrown during processing: %s", buf.toString());
113 }
114
115 boolean isNodeType(Element element) {
116 if (element.getKind() != ElementKind.CLASS) {
117 return false;
118 }
119 TypeElement type = (TypeElement) element;
120 Types types = processingEnv.getTypeUtils();
121
122 while (type != null) {
123 if (type.toString().equals("org.graalvm.compiler.graph.Node")) {
124 return true;
125 }
126 type = (TypeElement) types.asElement(type.getSuperclass());
127 }
128 return false;
129 }
130
131 @Override
132 public boolean doProcess(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
133 if (roundEnv.processingOver()) {
134 return false;
135 }
136
137 GraphNodeVerifier verifier = new GraphNodeVerifier(this);
138
139 for (Element element : roundEnv.getElementsAnnotatedWith(getTypeElement(NODE_INFO_CLASS_NAME))) {
140 scope = element;
141 try {
142 if (!isNodeType(element)) {
143 errorMessage(element, "%s can only be applied to Node subclasses", getSimpleName(NODE_INFO_CLASS_NAME));
144 continue;
145 }
146
147 AnnotationMirror nodeInfo = getAnnotation(element, getType(NODE_INFO_CLASS_NAME));
148 if (nodeInfo == null) {
149 errorMessage(element, "Cannot get %s annotation from annotated element", getSimpleName(NODE_INFO_CLASS_NAME));
150 continue;
151 }
152
|