# HG changeset patch # User Christian Humer # Date 1429032212 -7200 # Node ID 810d466073f04d854897794a5b193eac1b4166a7 # Parent a2e295c6cf7c732872920982a7c782eb704dd047 Truffle-DSL: fixed common supertype was always Object if generic child types contained void. diff -r a2e295c6cf7c -r 810d466073f0 graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java Tue Apr 14 19:23:32 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java Tue Apr 14 19:23:32 2015 +0200 @@ -165,6 +165,9 @@ TypeElement element1 = fromTypeMirror(type1); TypeElement element2 = fromTypeMirror(type2); if (element1 == null || element2 == null) { + if (element1 != null) { + return type1; + } return context.getType(Object.class); } diff -r a2e295c6cf7c -r 810d466073f0 graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/AbstractCodeWriter.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/AbstractCodeWriter.java Tue Apr 14 19:23:32 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/AbstractCodeWriter.java Tue Apr 14 19:23:32 2015 +0200 @@ -258,7 +258,7 @@ init = ((CodeVariableElement) f).getInit(); } - if (parent.getKind() == ElementKind.ENUM && f.getModifiers().contains(Modifier.STATIC)) { + if (parent != null && parent.getKind() == ElementKind.ENUM && f.getModifiers().contains(Modifier.STATIC)) { write(f.getSimpleName()); if (init != null) { write("("); @@ -266,12 +266,11 @@ write(")"); } } else { - Element enclosing = f.getEnclosingElement(); writeModifiers(f.getModifiers(), true); boolean varArgs = false; - if (enclosing.getKind() == ElementKind.METHOD) { - ExecutableElement method = (ExecutableElement) enclosing; + if (parent != null && parent.getKind() == ElementKind.METHOD) { + ExecutableElement method = (ExecutableElement) parent; if (method.isVarArgs() && method.getParameters().indexOf(f) == method.getParameters().size() - 1) { varArgs = true; }