diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImportClassFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImportClassFix.java index b5de7b73e318..cc7a0e1352e3 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImportClassFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImportClassFix.java @@ -30,6 +30,7 @@ import com.intellij.psi.*; import com.intellij.psi.util.ClassUtil; import org.jetbrains.annotations.NotNull; +import java.util.Collections; import java.util.List; public class ImportClassFix extends ImportClassFixBase { @@ -107,9 +108,21 @@ public class ImportClassFix extends ImportClassFixBase filterByContext(@NotNull List candidates, @NotNull PsiJavaCodeReferenceElement ref) { + if (ref instanceof PsiReferenceExpression) { + return Collections.emptyList(); + } + PsiElement typeElement = ref.getParent(); if (typeElement instanceof PsiTypeElement) { PsiElement var = typeElement.getParent(); diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImportClassFixBase.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImportClassFixBase.java index 8047486d93ba..2fbe85bc7b25 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImportClassFixBase.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImportClassFixBase.java @@ -102,14 +102,19 @@ public abstract class ImportClassFixBase classList = new ArrayList(classes.length); boolean isAnnotationReference = myElement.getParent() instanceof PsiAnnotation; @@ -140,6 +145,10 @@ public abstract class ImportClassFixBase filterByRequiredMemberName(List classList) { final String memberName = getRequiredMemberName(myElement); if (memberName != null) { diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/intention/AddImportActionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/intention/AddImportActionTest.groovy index ead75a2936e2..4b169fcc9249 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/intention/AddImportActionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/intention/AddImportActionTest.groovy @@ -177,6 +177,66 @@ class Test { ''' } + public void "test import class in class reference expression"() { + myFixture.configureByText 'a.java', ''' +class Test { + { + equals(Collection.class); + } +} +''' + importClass(); + myFixture.checkResult '''import java.util.Collection; + +class Test { + { + equals(Collection.class); + } +} +''' + } + + public void "test import class in qualifier expression"() { + myFixture.configureByText 'a.java', ''' +class Test { + { + equals(Collections.emptySet()); + } +} +''' + importClass(); + myFixture.checkResult '''import java.util.Collections; + +class Test { + { + equals(Collections.emptySet()); + } +} +''' + } + + public void "test don't import class in method call argument"() { + myFixture.configureByText 'a.java', ''' +class Test { + { + equals(Collection); + } +} +''' + assert !myFixture.filterAvailableIntentions("Import Class") + } + + public void "test don't import class in assignment"() { + myFixture.configureByText 'a.java', ''' +class Test { + { + Collection = 2; + } +} +''' + assert !myFixture.filterAvailableIntentions("Import Class") + } + private def importClass() { myFixture.launchAction(myFixture.findSingleIntention("Import Class")) }