# HG changeset patch # User Christian Humer # Date 1429049761 -7200 # Node ID 6fe8d8a248ba5c01f752c5a932de4470c9ee29c6 # Parent bb7e955127812c0c833fe4f74b60d2b27b269af6 Truffle-DSL: fix generic types are not unique in javac. diff -r bb7e95512781 -r 6fe8d8a248ba 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 Tue Apr 14 23:13:47 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Wed Apr 15 00:16:01 2015 +0200 @@ -1332,13 +1332,14 @@ List types = new ArrayList<>(); - Set frameTypes = new HashSet<>(); + Collection frameTypes = new HashSet<>(); for (SpecializationData specialization : node.getSpecializations()) { if (specialization.getFrame() != null) { frameTypes.add(specialization.getFrame().getType()); } } if (!frameTypes.isEmpty()) { + frameTypes = ElementUtils.uniqueSortedTypes(frameTypes); TypeMirror frameType; if (frameTypes.size() == 1) { frameType = frameTypes.iterator().next(); @@ -1359,7 +1360,7 @@ if (!genericParameter.getSpecification().isSignature()) { polymorphicType = genericParameter.getType(); } else { - Set usedTypes = new HashSet<>(); + Collection usedTypes = new HashSet<>(); for (SpecializationData specialization : node.getSpecializations()) { if (specialization.isUninitialized()) { continue; @@ -1373,6 +1374,7 @@ } usedTypes.add(parameter.getType()); } + usedTypes = ElementUtils.uniqueSortedTypes(usedTypes); if (usedTypes.size() == 1) { polymorphicType = usedTypes.iterator().next();