java resolve: prefer package for single-type-import only with default package exception (IDEA-206295)

This commit is contained in:
Anna.Kozlova
2019-02-07 11:44:10 +01:00
parent 64d845810b
commit 596fdda3e7
3 changed files with 15 additions and 1 deletions

View File

@@ -526,7 +526,8 @@ public class PsiJavaCodeReferenceElementImpl extends CompositePsiElement impleme
// A single-type-import declaration D in a compilation unit C of package P
// that imports a type named N shadows, throughout C, the declarations of
// ... any top level type named N declared in another compilation unit of P.
if (PsiTreeUtil.getParentOfType(this, PsiImportStatement.class) != null) {
PsiImportStatement importStatement = PsiTreeUtil.getParentOfType(this, PsiImportStatement.class);
if (importStatement != null && (!importStatement.isOnDemand() || !isQualified())) {
result = resolve(Kind.PACKAGE_NAME_KIND, containingFile);
if (result.length == 0) {
result = resolve(classKind, containingFile);

View File

@@ -0,0 +1,7 @@
package a;
import foo.Bar.*;
class MyTest {
private void foo(Inner inner) {}
}

View File

@@ -55,6 +55,12 @@ public class LightAdvHighlightingFixtureTest extends LightCodeInsightFixtureTest
assertNull(ReferencesSearch.search(aClass).findFirst());
}
public void testPackageNameAsClassFQName() {
myFixture.addClass("package foo.Bar; class A {}");
myFixture.addClass("package foo; public class Bar { public static class Inner {}}");
doTest();
}
public void testInaccessibleFunctionalTypeParameter() {
myFixture.addClass("package test; class A {}");
myFixture.addClass("package test; public interface I { void m(A a);}");