diff graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java @ 17002:9716891b7342

improved error reporting by @NodeInfo annotation processor
author Doug Simon <doug.simon@oracle.com>
date Mon, 01 Sep 2014 16:46:59 +0200
parents 39ca6be0d5eb
children 81c9a1fc9072
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java	Fri Aug 29 15:21:39 2014 -0700
+++ b/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java	Mon Sep 01 16:46:59 2014 +0200
@@ -278,15 +278,15 @@
         Successors;
     }
 
-    CodeCompilationUnit process(TypeElement node) {
+    CodeCompilationUnit process(TypeElement node, boolean constructorsOnly) {
         try {
-            return process0(node);
+            return process0(node, constructorsOnly);
         } finally {
             reset();
         }
     }
 
-    private CodeCompilationUnit process0(TypeElement node) {
+    private CodeCompilationUnit process0(TypeElement node, boolean constructorsOnly) {
 
         CodeCompilationUnit compilationUnit = new CodeCompilationUnit();
 
@@ -308,55 +308,56 @@
             genClass.add(subConstructor);
         }
 
-        DeclaredType generatedNode = (DeclaredType) getType(GeneratedNode.class);
-        CodeAnnotationMirror generatedNodeMirror = new CodeAnnotationMirror(generatedNode);
-        generatedNodeMirror.setElementValue(generatedNodeMirror.findExecutableElement("value"), new CodeAnnotationValue(node.asType()));
-        genClass.getAnnotationMirrors().add(generatedNodeMirror);
+        if (!constructorsOnly) {
+            DeclaredType generatedNode = (DeclaredType) getType(GeneratedNode.class);
+            CodeAnnotationMirror generatedNodeMirror = new CodeAnnotationMirror(generatedNode);
+            generatedNodeMirror.setElementValue(generatedNodeMirror.findExecutableElement("value"), new CodeAnnotationValue(node.asType()));
+            genClass.getAnnotationMirrors().add(generatedNodeMirror);
+
+            scanFields(node);
 
-        scanFields(node);
+            boolean hasInputs = !inputFields.isEmpty() || !inputListFields.isEmpty();
+            boolean hasSuccessors = !successorFields.isEmpty() || !successorListFields.isEmpty();
 
-        boolean hasInputs = !inputFields.isEmpty() || !inputListFields.isEmpty();
-        boolean hasSuccessors = !successorFields.isEmpty() || !successorListFields.isEmpty();
+            if (hasInputs || hasSuccessors) {
+                createGetNodeAtMethod();
+                createGetInputTypeAtMethod();
+                createGetNameOfMethod();
+                createUpdateOrInitializeNodeAtMethod(false);
+                createUpdateOrInitializeNodeAtMethod(true);
+                createIsLeafNodeMethod(genClass);
 
-        if (hasInputs || hasSuccessors) {
-            createGetNodeAtMethod();
-            createGetInputTypeAtMethod();
-            createGetNameOfMethod();
-            createUpdateOrInitializeNodeAtMethod(false);
-            createUpdateOrInitializeNodeAtMethod(true);
-            createIsLeafNodeMethod(genClass);
+                if (!inputListFields.isEmpty() || !successorListFields.isEmpty()) {
+                    createGetNodeListAtMethod();
+                    createSetNodeListAtMethod();
+                }
+            }
+
+            if (hasInputs) {
+                createIsOptionalInputAtMethod();
+                createGetFirstLevelPositionsMethod(Inputs, inputFields, inputListFields);
+
+                createContainsMethod(Inputs, inputFields, inputListFields);
+                createIterableMethod(Inputs);
 
-            if (!inputListFields.isEmpty() || !successorListFields.isEmpty()) {
-                createGetNodeListAtMethod();
-                createSetNodeListAtMethod();
+                CodeTypeElement inputsIteratorClass = createIteratorClass(Inputs, packageElement, inputFields, inputListFields);
+                createAllIteratorClass(Inputs, inputsIteratorClass.asType(), packageElement, inputFields, inputListFields);
+                createWithModCountIteratorClass(Inputs, inputsIteratorClass.asType(), packageElement);
+                createIterableClass(Inputs, packageElement);
+            }
+
+            if (hasSuccessors) {
+                createGetFirstLevelPositionsMethod(Successors, successorFields, successorListFields);
+
+                createContainsMethod(Successors, successorFields, successorListFields);
+                createIterableMethod(Successors);
+
+                CodeTypeElement successorsIteratorClass = createIteratorClass(Successors, packageElement, successorFields, successorListFields);
+                createAllIteratorClass(Successors, successorsIteratorClass.asType(), packageElement, successorFields, successorListFields);
+                createWithModCountIteratorClass(Successors, successorsIteratorClass.asType(), packageElement);
+                createIterableClass(Successors, packageElement);
             }
         }
-
-        if (hasInputs) {
-            createIsOptionalInputAtMethod();
-            createGetFirstLevelPositionsMethod(Inputs, inputFields, inputListFields);
-
-            createContainsMethod(Inputs, inputFields, inputListFields);
-            createIterableMethod(Inputs);
-
-            CodeTypeElement inputsIteratorClass = createIteratorClass(Inputs, packageElement, inputFields, inputListFields);
-            createAllIteratorClass(Inputs, inputsIteratorClass.asType(), packageElement, inputFields, inputListFields);
-            createWithModCountIteratorClass(Inputs, inputsIteratorClass.asType(), packageElement);
-            createIterableClass(Inputs, packageElement);
-        }
-
-        if (hasSuccessors) {
-            createGetFirstLevelPositionsMethod(Successors, successorFields, successorListFields);
-
-            createContainsMethod(Successors, successorFields, successorListFields);
-            createIterableMethod(Successors);
-
-            CodeTypeElement successorsIteratorClass = createIteratorClass(Successors, packageElement, successorFields, successorListFields);
-            createAllIteratorClass(Successors, successorsIteratorClass.asType(), packageElement, successorFields, successorListFields);
-            createWithModCountIteratorClass(Successors, successorsIteratorClass.asType(), packageElement);
-            createIterableClass(Successors, packageElement);
-        }
-
         compilationUnit.add(genClass);
         return compilationUnit;
     }