mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
optimize imports: don't force single imports if imported method available through inheritor as well (IDEA-152798)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
+44
@@ -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" +
|
||||
"}");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user