Mercurial > hg > truffle
diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/TypeSystemParser.java @ 18783:7d67a33e1bbb
Truffle-DSL: made type name verification more robust. Added some tests. (GRAAL-468 #resolve)
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Mon, 05 Jan 2015 20:23:22 +0100 |
parents | 3ea386a1036f |
children | 18c0f02fa4d2 |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/TypeSystemParser.java Mon Jan 05 20:23:22 2015 +0100 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/TypeSystemParser.java Mon Jan 05 20:23:22 2015 +0100 @@ -280,15 +280,17 @@ } private static void verifyNamesUnique(TypeSystemData typeSystem) { - List<TypeData> types = typeSystem.getTypes(); - for (int i = 0; i < types.size(); i++) { - for (int j = i + 1; j < types.size(); j++) { - String name1 = ElementUtils.getSimpleName(types.get(i).getBoxedType()); - String name2 = ElementUtils.getSimpleName(types.get(j).getBoxedType()); - if (name1.equalsIgnoreCase(name2)) { - typeSystem.addError("Two types result in the same name: %s, %s.", name1, name2); - } + Set<String> usedNames = new HashSet<>(); + for (TypeData type : typeSystem.getTypes()) { + String boxedName = ElementUtils.getSimpleName(type.getBoxedType()); + String primitiveName = ElementUtils.getSimpleName(type.getPrimitiveType()); + if (usedNames.contains(boxedName)) { + typeSystem.addError("Two types result in the same boxed name: %s.", boxedName); + } else if (usedNames.contains(primitiveName)) { + typeSystem.addError("Two types result in the same primitive name: %s.", primitiveName); } + usedNames.add(boxedName); + usedNames.add(primitiveName); } } }