IDEA-24722: Incorrectly marked import as error
authorMaxim Medvedev <maxim.medvedev@jetbrains.com>
Mon, 30 Nov 2009 15:49:22 +0000 (18:49 +0300)
committerMaxim Medvedev <maxim.medvedev@jetbrains.com>
Mon, 30 Nov 2009 15:49:22 +0000 (18:49 +0300)
plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java
plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveClassTest.java
plugins/groovy/testdata/resolve/class/aliasedImportVsImplicitImport/Test.groovy [new file with mode: 0644]

index 26e9c39e49b47f990ad938c14b4ede324f263638..95a470b7d7385a40264306263215864233316cdb 100644 (file)
@@ -131,6 +131,12 @@ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile {
 
     final GrImportStatement[] imports = getImportStatements();
 
+    for (GrImportStatement importStatement : imports) {
+      if (importStatement.isAliasedImport() && !importStatement.processDeclarations(processor, state, lastParent, place)) {
+        return false;
+      }
+    }
+
     final String className = getWantedClassName(processor, state);
     if (className != null) {
       final Set<String> maybeImplicit = getImplicitlyImportableClasses(facade, className);
@@ -142,9 +148,9 @@ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile {
         }
       }
     }
-    
+
     for (GrImportStatement importStatement : imports) {
-      if (!importStatement.processDeclarations(processor, state, lastParent, place)) {
+      if (!importStatement.isAliasedImport() && !importStatement.processDeclarations(processor, state, lastParent, place)) {
         return false;
       }
     }
index b0cbeaddb83b46b87a82fe529408247edbdfa9e9..8d6ab0c644695d54079e3449808a3e9a4fd6e5b5 100644 (file)
@@ -106,6 +106,13 @@ public class ResolveClassTest extends GroovyResolveTestCase {
   public void testInnerClassInSubclass()throws Throwable {doTest();}
   public void testInnerClassUsageInsideOuterSubclass() throws Throwable{doTest();}
 
+  public void testAliasedImportVsImplicitImport() throws Exception {
+    PsiReference ref = configureByFile("aliasedImportVsImplicitImport/Test.groovy");
+    final PsiElement resolved = ref.resolve();
+    assertInstanceOf(resolved, PsiClass.class);
+    assertEquals("java.util.ArrayList", ((PsiClass)resolved).getQualifiedName());
+  }
+
   private void doTest() throws Exception {
     doTest(getTestName(true) + "/" + getTestName(false) + ".groovy");
   }
diff --git a/plugins/groovy/testdata/resolve/class/aliasedImportVsImplicitImport/Test.groovy b/plugins/groovy/testdata/resolve/class/aliasedImportVsImplicitImport/Test.groovy
new file mode 100644 (file)
index 0000000..67a61ad
--- /dev/null
@@ -0,0 +1,3 @@
+import java.util.ArrayList as List
+
+def seats = new L<ref>ist(10)
\ No newline at end of file