changeset 16814: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);