# HG changeset patch # User Doug Simon # Date 1445862499 -3600 # Node ID 6cec0097107fa381aaded42fb1b6d20cb568400c # Parent 414e82b9fc35c11cbe322495a7ee53434d07f9c5 added workaround based on JDK-8075793 to allow compilation with JDK9 javac diff -r 414e82b9fc35 -r 6cec0097107f truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/compiler/JDTCompiler.java --- a/truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/compiler/JDTCompiler.java Fri Oct 23 20:23:00 2015 +0200 +++ b/truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/compiler/JDTCompiler.java Mon Oct 26 13:28:19 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.truffle.dsl.processor.java.compiler; import com.oracle.truffle.dsl.processor.java.ElementUtils; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -31,6 +32,7 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; + import javax.annotation.processing.ProcessingEnvironment; import javax.lang.model.element.Element; import javax.lang.model.element.ExecutableElement; @@ -47,13 +49,20 @@ } } + /** + * @see "https://bugs.openjdk.java.net/browse/JDK-8039214" + */ + private static List newElementList(List src) { + List workaround = new ArrayList<>(src); + return workaround; + } + public List getAllMembersInDeclarationOrder(ProcessingEnvironment environment, TypeElement type) { - return sortBySourceOrder(new ArrayList<>(environment.getElementUtils().getAllMembers(type))); - + return sortBySourceOrder(newElementList(environment.getElementUtils().getAllMembers(type))); } public List getEnclosedElementsInDeclarationOrder(TypeElement type) { - return sortBySourceOrder(new ArrayList<>(type.getEnclosedElements())); + return sortBySourceOrder(newElementList(type.getEnclosedElements())); } private static List sortBySourceOrder(List elements) { diff -r 414e82b9fc35 -r 6cec0097107f truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java --- a/truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Fri Oct 23 20:23:00 2015 +0200 +++ b/truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Mon Oct 26 13:28:19 2015 +0100 @@ -66,6 +66,7 @@ import com.oracle.truffle.dsl.processor.model.SpecializationThrowsData; import com.oracle.truffle.dsl.processor.model.TemplateMethod; import com.oracle.truffle.dsl.processor.model.TypeSystemData; + import java.lang.annotation.Annotation; import java.util.ArrayList; import java.util.Arrays; @@ -79,6 +80,7 @@ import java.util.Map; import java.util.Objects; import java.util.Set; + import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.AnnotationValue; import javax.lang.model.element.Element; @@ -304,9 +306,7 @@ } private List loadMembers(TypeElement templateType) { - List members = new ArrayList<>(CompilerFactory.getCompiler(templateType).getAllMembersInDeclarationOrder(context.getEnvironment(), templateType)); - - return members; + return newElementList(CompilerFactory.getCompiler(templateType).getAllMembersInDeclarationOrder(context.getEnvironment(), templateType)); } private boolean containsSpecializations(List elements) { @@ -1276,7 +1276,7 @@ private static List filterNotAccessibleElements(TypeElement templateType, List elements) { String packageName = ElementUtils.getPackageName(templateType); - List filteredElements = new ArrayList<>(elements); + List filteredElements = newElementList(elements); for (Element element : elements) { Modifier visibility = ElementUtils.getVisibility(element.getModifiers()); if (visibility == Modifier.PRIVATE) { @@ -1599,6 +1599,14 @@ } } + /** + * @see "https://bugs.openjdk.java.net/browse/JDK-8039214" + */ + private static List newElementList(List src) { + List workaround = new ArrayList<>(src); + return workaround; + } + private static void verifyMissingAbstractMethods(NodeData nodeData, List originalElements) { if (!nodeData.needsFactory()) { // missing abstract methods only needs to be implemented @@ -1606,7 +1614,7 @@ return; } - List elements = new ArrayList<>(originalElements); + List elements = newElementList(originalElements); Set unusedElements = new HashSet<>(elements); for (ExecutableElement method : nodeData.getAllTemplateMethods()) { unusedElements.remove(method); diff -r 414e82b9fc35 -r 6cec0097107f truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/TypeSystemParser.java --- a/truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/TypeSystemParser.java Fri Oct 23 20:23:00 2015 +0200 +++ b/truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/TypeSystemParser.java Mon Oct 26 13:28:19 2015 +0100 @@ -32,6 +32,7 @@ import com.oracle.truffle.dsl.processor.model.TypeCastData; import com.oracle.truffle.dsl.processor.model.TypeCheckData; import com.oracle.truffle.dsl.processor.model.TypeSystemData; + import java.lang.annotation.Annotation; import java.util.ArrayList; import java.util.Arrays; @@ -40,6 +41,7 @@ import java.util.List; import java.util.Map; import java.util.Set; + import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.Element; import javax.lang.model.element.ExecutableElement; @@ -60,6 +62,14 @@ return TypeSystem.class; } + /** + * @see "https://bugs.openjdk.java.net/browse/JDK-8039214" + */ + private static List newElementList(List src) { + List workaround = new ArrayList<>(src); + return workaround; + } + @Override protected TypeSystemData parse(Element element, AnnotationMirror mirror) { TypeElement templateType = (TypeElement) element; @@ -94,7 +104,7 @@ verifyExclusiveMethodAnnotation(typeSystem, TypeCast.class, TypeCheck.class); - List elements = new ArrayList<>(context.getEnvironment().getElementUtils().getAllMembers(templateType)); + List elements = newElementList(context.getEnvironment().getElementUtils().getAllMembers(templateType)); List implicitCasts = new ImplicitCastParser(context, typeSystem).parse(elements); List casts = new TypeCastParser(context, typeSystem).parse(elements); List checks = new TypeCheckParser(context, typeSystem).parse(elements);