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 8b171bf89da9..7ea1b877031f 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 @@ -276,7 +276,11 @@ public class ImportHelper{ else { PsiMethod[] methods = aClass.findMethodsByName(shortName, true); for (PsiMethod method : methods) { - if (method.hasModifierProperty(PsiModifier.STATIC) && resolveHelper.isAccessible(method, file, null)) { + PsiClass containingClass = method.getContainingClass(); + if (containingClass == null) continue; + if (method.hasModifierProperty(PsiModifier.STATIC) && + resolveHelper.isAccessible(method, file, null) && + !prefix.equals(containingClass.getQualifiedName())) { namesToUseSingle.add(name); } } 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 dd898f2ef30e..994a483e64cf 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 @@ -97,4 +97,48 @@ public class LightOptimizeImportsTest extends LightCodeInsightFixtureTestCase { " }\n" + "}"); } + + public void testStaticImportOnMethodFromSuperClass() { + myFixture.addClass("package p; public class A {\n" + + " public static void m1() {}\n" + + " public static void m2() {}\n" + + "}"); + + myFixture.addClass("package p; public class B extends A {\n" + + " public static void m3() {}\n" + + " public static void m4() {}\n" + + "}"); + + myFixture.configureByText(StdFileTypes.JAVA, "\n" + + "import static p.A.m1;\n" + + "import static p.A.m2;\n" + + "import static p.B.m3;\n" + + "import static p.B.m4;\n" + + "\n" + + "public class Main {\n" + + " public static void main(String[] args) {\n" + + " m1();\n" + + " m2();\n" + + " m3();\n" + + " m4();\n" + + " }\n" + + "}"); + + JavaCodeStyleSettings javaSettings = JavaCodeStyleSettings.getInstance(getProject()); + javaSettings.NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND = 1; + + WriteCommandAction.runWriteCommandAction(getProject(), () -> JavaCodeStyleManager.getInstance(getProject()).optimizeImports(getFile())); + + myFixture.checkResult("import static p.A.*;\n" + + "import static p.B.*;\n" + + "\n" + + "public class Main {\n" + + " public static void main(String[] args) {\n" + + " m1();\n" + + " m2();\n" + + " m3();\n" + + " m4();\n" + + " }\n" + + "}"); + } }