diff --git a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java index 8bb1a8daa501..e5cb7d55ed61 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java @@ -412,7 +412,7 @@ public class ImportHelper{ useOnDemand = false; } // name of class we try to import is the same as of the class defined in this file - if (curRefClass != null) { + if (containsInCurrentFile(file, curRefClass)) { useOnDemand = true; } // check conflicts @@ -428,10 +428,9 @@ public class ImportHelper{ } if (useOnDemand && - curRefClass != null && refClass.getContainingClass() != null && mySettings.INSERT_INNER_CLASS_IMPORTS && - "java.lang".equals(StringUtil.getPackageName(curRefClass.getQualifiedName()))) { + containsInCurrentFile(file, curRefClass)) { return false; } @@ -465,6 +464,17 @@ public class ImportHelper{ return true; } + private static boolean containsInCurrentFile(@NotNull PsiJavaFile file, PsiClass curRefClass) { + if (curRefClass != null) { + final String curRefClassQualifiedName = curRefClass.getQualifiedName(); + if (curRefClassQualifiedName != null && + ArrayUtil.find(file.getImplicitlyImportedPackages(), StringUtil.getPackageName(curRefClassQualifiedName)) < 0) { + return true; + } + } + return false; + } + private static void calcClassesToReimport(PsiJavaFile file, JavaPsiFacade facade, PsiResolveHelper helper, String packageName, List classesToReimport, Collection onDemandRefs) { if (onDemandRefs.isEmpty()) { 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 fd276d36590d..86f0236b88f3 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/intention/AddImportActionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/intention/AddImportActionTest.groovy @@ -17,8 +17,11 @@ package com.intellij.codeInsight.intention import com.intellij.lang.java.JavaLanguage; import com.intellij.pom.java.LanguageLevel +import com.intellij.psi.PsiClass +import com.intellij.psi.PsiFile import com.intellij.psi.codeStyle.CodeStyleSettings import com.intellij.psi.codeStyle.CodeStyleSettingsManager +import com.intellij.psi.impl.source.codeStyle.ImportHelper import com.intellij.testFramework.IdeaTestUtil import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase @@ -74,7 +77,7 @@ public class Foo { } ''' importClass() - myFixture.checkResult '''import foo.*; + myFixture.checkResult '''import foo.StringValue; public class Foo { StringValue sv;