Mercurial > hg > graal-jvmci-8
changeset 16817:85c6e6fc3961
Truffle-DSL: refined autoimportCache organizeImports.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Wed, 13 Aug 2014 18:06:18 +0200 |
parents | b8470fcec3a3 |
children | 8169deda04bb |
files | graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/OrganizedImports.java |
diffstat | 1 files changed, 6 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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<String> declaredStaticFields = new HashSet<>(); private final Set<String> ambiguousStaticMethods = new HashSet<>(); private final Set<String> ambiguousStaticFields = new HashSet<>(); - private final Map<Element, Set<String>> autoImportCache = new HashMap<>(); + private final Map<String, Set<String>> 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<String> autoImportedTypes = autoImportCache.get(enclosedElement); - + Set<String> autoImportedTypes = autoImportCache.get(enclosedElement.toString()); if (autoImportedTypes == null) { List<Element> 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);