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 bee64d6a4ef6..6063cd653f6e 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 @@ -390,7 +390,7 @@ public final class ImportHelper{ Import current = new Import(packageOrClassName, isStatic); if (namesToUseSingle.remove(name)) { if (useOnDemand && importedPackagesOrClasses.contains(current)) { - buffer.insert(buffer.lastIndexOf("import"), "import " + (isStatic ? "static " : "") + name + ";\n"); + buffer.insert(buffer.lastIndexOf("import "), "import " + (isStatic ? "static " : "") + name + ";\n"); continue; } useOnDemand = false; diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightOptimizeImportsTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightOptimizeImportsTest.java index 5f83d32774bc..b4ffb5d15bcb 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightOptimizeImportsTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightOptimizeImportsTest.java @@ -243,6 +243,49 @@ public class LightOptimizeImportsTest extends LightJavaCodeInsightFixtureTestCas myFixture.checkResult(result); } + public void testConflictInPackageWithImportInName() { + myFixture.addClass("package a.importb; public class A {}"); + myFixture.addClass("package a.importb; public class B {}"); + myFixture.addClass("package a.importb; public class Boolean {}"); // conflict with java.lang.Process + + @Language("JAVA") + String text = """ + package a; + + import a.importb.A; + import a.importb.B; + import a.importb.Boolean; + + public class Main { + public static void main(String[] args) { + A a; + B b; + Boolean boo; + } + }"""; + myFixture.configureByText(JavaFileType.INSTANCE, text); + + JavaCodeStyleSettings javaSettings = JavaCodeStyleSettings.getInstance(getProject()); + javaSettings.CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND = 1; + WriteCommandAction.runWriteCommandAction(getProject(), () -> JavaCodeStyleManager.getInstance(getProject()).optimizeImports(getFile())); + + @Language("JAVA") + String result = """ + package a; + + import a.importb.Boolean; + import a.importb.*; + + public class Main { + public static void main(String[] args) { + A a; + B b; + Boolean boo; + } + }"""; + myFixture.checkResult(result); + } + public void testStaticImportOnMethodFromSuperClass() { myFixture.addClass(""" package p; public class A {