add single static import: ensure accessible class (from reference) is chosen (IDEA-144708)

This commit is contained in:
Anna Kozlova
2018-08-24 16:55:17 +03:00
parent 4931ac4386
commit 6b0b9c5033
4 changed files with 24 additions and 0 deletions

View File

@@ -169,6 +169,9 @@ public class AddSingleMemberStaticImportAction extends BaseElementAtCaretIntenti
if (qResolved instanceof PsiVariable) {
aClass = PsiUtil.resolveClassInClassTypeOnly(((PsiVariable)qResolved).getType());
}
else if (qResolved instanceof PsiClass) {
aClass = (PsiClass)qResolved;
}
}
}
return aClass;

View File

@@ -0,0 +1,6 @@
import foo.*;
class Class2 {
public static void main(String[] args) {
Bar.f<caret>oo();
}
}

View File

@@ -0,0 +1,9 @@
import foo.*;
import static foo.Bar.foo;
class Class2 {
public static void main(String[] args) {
f<caret>oo();
}
}

View File

@@ -29,6 +29,12 @@ public class AddSingleStaticImportActionTest extends JavaCodeInsightFixtureTestC
doTest("Add static import for 'impl.FooImpl.foo'");
}
public void testInaccessibleSuper() {
myFixture.addClass("package foo; class Foo {public static void foo(){}}");
myFixture.addClass("package foo; public class Bar extends Foo {}");
doTest("Add static import for 'foo.Bar.foo'");
}
public void testInsideParameterizedReference() {
myFixture.addClass("package foo; " +
"public class Class1 {" +