diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeParser.java @ 11742:85b846b31690

Truffle-DSL: automatically generate copy constructor if super constructor expects only SourceSection parameter.
author Andreas Woess <andreas.woess@jku.at>
date Fri, 20 Sep 2013 16:30:18 +0200
parents 2fb276f5e3e9
children 29de278b7c1b
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeParser.java	Fri Sep 20 13:41:24 2013 +0200
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeParser.java	Fri Sep 20 16:30:18 2013 +0200
@@ -1052,7 +1052,7 @@
 
         boolean parametersFound = false;
         for (ExecutableElement constructor : constructors) {
-            if (!constructor.getParameters().isEmpty()) {
+            if (!constructor.getParameters().isEmpty() && !isSourceSectionConstructor(context, constructor)) {
                 parametersFound = true;
             }
         }
@@ -1077,6 +1077,10 @@
         nodeData.addError("Specialization constructor '%s(%s previousNode) { this(...); }' is required.", Utils.getSimpleName(type), Utils.getSimpleName(type));
     }
 
+    static boolean isSourceSectionConstructor(ProcessorContext context, ExecutableElement constructor) {
+        return constructor.getParameters().size() == 1 && constructor.getParameters().get(0).asType().equals(context.getTruffleTypes().getSourceSection());
+    }
+
     private static boolean verifySpecializationParameters(NodeData nodeData) {
         boolean valid = true;
         int args = -1;