# HG changeset patch # User Christian Humer # Date 1407945978 -7200 # Node ID 85c6e6fc3961504edc61b411ed71ea3e28b34cfc # Parent b8470fcec3a317a018fc45e88ef33dfc94c8b5aa Truffle-DSL: refined autoimportCache organizeImports. diff -r b8470fcec3a3 -r 85c6e6fc3961 graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/OrganizedImports.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/OrganizedImports.java Wed Aug 13 18:06:18 2014 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/OrganizedImports.java Wed Aug 13 18:06:18 2014 +0200 @@ -43,7 +43,7 @@ private final Set declaredStaticFields = new HashSet<>(); private final Set ambiguousStaticMethods = new HashSet<>(); private final Set ambiguousStaticFields = new HashSet<>(); - private final Map> autoImportCache = new HashMap<>(); + private final Map> autoImportCache = new HashMap<>(); private final CodeTypeElement topLevelClass; @@ -224,8 +224,9 @@ return allAmbiguous; } - private boolean needsImport(Element enclosedElement, TypeMirror importType) { + private boolean needsImport(Element enclosed, TypeMirror importType) { String importPackagName = getPackageName(importType); + TypeElement enclosedElement = findNearestEnclosingType(enclosed); if (importPackagName == null) { return false; } else if (importPackagName.equals("java.lang")) { @@ -234,18 +235,18 @@ return false; // same package name -> no import } - Set autoImportedTypes = autoImportCache.get(enclosedElement); - + Set autoImportedTypes = autoImportCache.get(enclosedElement.toString()); if (autoImportedTypes == null) { List elements = ElementUtils.getElementHierarchy(enclosedElement); autoImportedTypes = new HashSet<>(); for (Element element : elements) { + if (element.getKind().isClass()) { collectSuperTypeImports((TypeElement) element, autoImportedTypes); collectInnerTypeImports((TypeElement) element, autoImportedTypes); } } - autoImportCache.put(enclosedElement, autoImportedTypes); + autoImportCache.put(enclosedElement.toString(), autoImportedTypes); } String qualifiedName = getQualifiedName(importType);