# HG changeset patch # User Christian Humer # Date 1429212596 -7200 # Node ID 8e5f9310f3aa46e36c3ba37338885e227970c721 # Parent 370dbf93f0ca74c01bdc1468d2cacf0724ff8ec2 Truffle-DSL: fixed wrong order for implicit casts. diff -r 370dbf93f0ca -r 8e5f9310f3aa 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 Thu Apr 16 20:08:18 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java Thu Apr 16 21:29:56 2015 +0200 @@ -1172,10 +1172,14 @@ } } - public static List sortTypes(List list) { + public static List sortTypes(List list, final boolean reverse) { Collections.sort(list, new Comparator() { public int compare(TypeMirror o1, TypeMirror o2) { - return compareType(o1, o2); + if (reverse) { + return compareType(o2, o1); + } else { + return compareType(o1, o2); + } } }); return list; @@ -1205,7 +1209,7 @@ return ElementUtils.getSimpleName(signature1).compareTo(ElementUtils.getSimpleName(signature2)); } - public static List uniqueSortedTypes(Collection types) { + public static List uniqueSortedTypes(Collection types, boolean reverse) { if (types.isEmpty()) { return new ArrayList<>(0); } else if (types.size() <= 1) { @@ -1219,7 +1223,7 @@ for (TypeMirror type : types) { sourceTypes.put(ElementUtils.getTypeId(type), type); } - return sortTypes(new ArrayList<>(sourceTypes.values())); + return sortTypes(new ArrayList<>(sourceTypes.values()), reverse); } public static int compareMethod(ExecutableElement method1, ExecutableElement method2) { diff -r 370dbf93f0ca -r 8e5f9310f3aa graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java Thu Apr 16 20:08:18 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java Thu Apr 16 21:29:56 2015 +0200 @@ -593,7 +593,7 @@ } } - return ElementUtils.uniqueSortedTypes(types); + return ElementUtils.uniqueSortedTypes(types, false); } } diff -r 370dbf93f0ca -r 8e5f9310f3aa graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeSystemData.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeSystemData.java Thu Apr 16 20:08:18 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeSystemData.java Thu Apr 16 21:29:56 2015 +0200 @@ -158,7 +158,7 @@ for (ImplicitCastData cast : getImplicitCasts()) { sourceTypes.add(cast.getTargetType()); } - return ElementUtils.uniqueSortedTypes(sourceTypes); + return ElementUtils.uniqueSortedTypes(sourceTypes, true); } public List lookupSourceTypes(TypeMirror targetType) { @@ -169,7 +169,7 @@ sourceTypes.add(cast.getSourceType()); } } - return sourceTypes; + return ElementUtils.uniqueSortedTypes(sourceTypes, true); } public boolean isImplicitSubtypeOf(TypeMirror source, TypeMirror target) { diff -r 370dbf93f0ca -r 8e5f9310f3aa graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Thu Apr 16 20:08:18 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Thu Apr 16 21:29:56 2015 +0200 @@ -1334,7 +1334,7 @@ } if (!frameTypes.isEmpty()) { - frameTypes = ElementUtils.uniqueSortedTypes(frameTypes); + frameTypes = ElementUtils.uniqueSortedTypes(frameTypes, false); TypeMirror frameType; if (frameTypes.size() == 1) { frameType = frameTypes.iterator().next(); @@ -1369,7 +1369,7 @@ } usedTypes.add(parameter.getType()); } - usedTypes = ElementUtils.uniqueSortedTypes(usedTypes); + usedTypes = ElementUtils.uniqueSortedTypes(usedTypes, false); if (usedTypes.size() == 1) { polymorphicType = usedTypes.iterator().next();