Mercurial > hg > truffle
comparison truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/compiler/JDTCompiler.java @ 22326:6cec0097107f
added workaround based on JDK-8075793 to allow compilation with JDK9 javac
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Mon, 26 Oct 2015 13:28:19 +0100 |
parents | dc83cc1f94f2 |
children | 4a43dc00a654 |
comparison
equal
deleted
inserted
replaced
22325:414e82b9fc35 | 22326:6cec0097107f |
---|---|
21 * questions. | 21 * questions. |
22 */ | 22 */ |
23 package com.oracle.truffle.dsl.processor.java.compiler; | 23 package com.oracle.truffle.dsl.processor.java.compiler; |
24 | 24 |
25 import com.oracle.truffle.dsl.processor.java.ElementUtils; | 25 import com.oracle.truffle.dsl.processor.java.ElementUtils; |
26 | |
26 import java.util.ArrayList; | 27 import java.util.ArrayList; |
27 import java.util.Arrays; | 28 import java.util.Arrays; |
28 import java.util.Collections; | 29 import java.util.Collections; |
29 import java.util.Comparator; | 30 import java.util.Comparator; |
30 import java.util.HashMap; | 31 import java.util.HashMap; |
31 import java.util.List; | 32 import java.util.List; |
32 import java.util.Map; | 33 import java.util.Map; |
33 import java.util.TreeMap; | 34 import java.util.TreeMap; |
35 | |
34 import javax.annotation.processing.ProcessingEnvironment; | 36 import javax.annotation.processing.ProcessingEnvironment; |
35 import javax.lang.model.element.Element; | 37 import javax.lang.model.element.Element; |
36 import javax.lang.model.element.ExecutableElement; | 38 import javax.lang.model.element.ExecutableElement; |
37 import javax.lang.model.element.TypeElement; | 39 import javax.lang.model.element.TypeElement; |
38 | 40 |
45 } catch (ClassNotFoundException e) { | 47 } catch (ClassNotFoundException e) { |
46 return false; | 48 return false; |
47 } | 49 } |
48 } | 50 } |
49 | 51 |
52 /** | |
53 * @see "https://bugs.openjdk.java.net/browse/JDK-8039214" | |
54 */ | |
55 private static List<Element> newElementList(List<? extends Element> src) { | |
56 List<Element> workaround = new ArrayList<>(src); | |
57 return workaround; | |
58 } | |
59 | |
50 public List<? extends Element> getAllMembersInDeclarationOrder(ProcessingEnvironment environment, TypeElement type) { | 60 public List<? extends Element> getAllMembersInDeclarationOrder(ProcessingEnvironment environment, TypeElement type) { |
51 return sortBySourceOrder(new ArrayList<>(environment.getElementUtils().getAllMembers(type))); | 61 return sortBySourceOrder(newElementList(environment.getElementUtils().getAllMembers(type))); |
52 | |
53 } | 62 } |
54 | 63 |
55 public List<? extends Element> getEnclosedElementsInDeclarationOrder(TypeElement type) { | 64 public List<? extends Element> getEnclosedElementsInDeclarationOrder(TypeElement type) { |
56 return sortBySourceOrder(new ArrayList<>(type.getEnclosedElements())); | 65 return sortBySourceOrder(newElementList(type.getEnclosedElements())); |
57 } | 66 } |
58 | 67 |
59 private static List<? extends Element> sortBySourceOrder(List<Element> elements) { | 68 private static List<? extends Element> sortBySourceOrder(List<Element> elements) { |
60 Map<TypeElement, List<Element>> groupedByEnclosing = new HashMap<>(); | 69 Map<TypeElement, List<Element>> groupedByEnclosing = new HashMap<>(); |
61 for (Element element : elements) { | 70 for (Element element : elements) { |