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) {