Mercurial > hg > graal-jvmci-8
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;