mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
prefer package to class in import list (IDEA-113756)
This commit is contained in:
+12
-1
@@ -461,6 +461,14 @@ public class PsiJavaCodeReferenceElementImpl extends CompositePsiElement impleme
|
||||
case CLASS_FQ_OR_PACKAGE_NAME_KIND:
|
||||
case CLASS_OR_PACKAGE_NAME_KIND: {
|
||||
int classKind = kind == CLASS_OR_PACKAGE_NAME_KIND ? CLASS_NAME_KIND : CLASS_FQ_NAME_KIND;
|
||||
|
||||
//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, PsiImportStatementBase.class) != null) {
|
||||
JavaResolveResult[] result = resolve(PACKAGE_NAME_KIND, containingFile);
|
||||
return result.length == 0 ? resolve(classKind, containingFile) : result;
|
||||
}
|
||||
|
||||
JavaResolveResult[] result = resolve(classKind, containingFile);
|
||||
|
||||
if (result.length == 1 && !result[0].isAccessible()) {
|
||||
@@ -713,7 +721,10 @@ public class PsiJavaCodeReferenceElementImpl extends CompositePsiElement impleme
|
||||
case CLASS_FQ_OR_PACKAGE_NAME_KIND:
|
||||
if (element instanceof PsiClass) {
|
||||
final String qName = ((PsiClass)element).getQualifiedName();
|
||||
return qName != null && qName.equals(getCanonicalText(false, null, containingFile));
|
||||
if (qName != null && qName.equals(getCanonicalText(false, null, containingFile))) {
|
||||
return !PsiUtil.isFromDefaultPackage((PsiClass)element) ||
|
||||
PsiTreeUtil.getParentOfType(this, PsiImportStatementBase.class) == null;
|
||||
}
|
||||
}
|
||||
if (element instanceof PsiPackage) {
|
||||
final String qName = ((PsiPackage)element).getQualifiedName();
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
import test.A;
|
||||
|
||||
class B {
|
||||
private A a;
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import static InlineIssue.ClassToMove.F1;
|
||||
package p;
|
||||
import static p.InlineIssue.ClassToMove.F1;
|
||||
abstract class InlineIssue {
|
||||
public enum ClassToMove { F1 }
|
||||
|
||||
|
||||
+2
-1
@@ -1,4 +1,5 @@
|
||||
import static Desc.ClassToMove.F1;
|
||||
package p;
|
||||
import static p.Desc.ClassToMove.F1;
|
||||
abstract class InlineIssue {
|
||||
|
||||
}
|
||||
|
||||
+12
@@ -16,6 +16,8 @@
|
||||
package com.intellij.codeInsight.daemon;
|
||||
|
||||
import com.intellij.JavaTestUtil;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.testFramework.LightProjectDescriptor;
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -35,6 +37,16 @@ public class LightAdvHighlightingFixtureTest extends LightCodeInsightFixtureTest
|
||||
myFixture.checkHighlighting(false, false, false);
|
||||
}
|
||||
|
||||
public void testPackageNamedAsClassInDefaultPackage() throws Exception {
|
||||
myFixture.addClass("package test; public class A {}");
|
||||
final PsiClass aClass = myFixture.addClass("public class test {}");
|
||||
|
||||
myFixture.configureByFile(getTestName(false) + ".java");
|
||||
myFixture.checkHighlighting();
|
||||
|
||||
assertNull(ReferencesSearch.search(aClass).findFirst());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getBasePath() {
|
||||
return JavaTestUtil.getRelativeJavaTestDataPath() + "/codeInsight/daemonCodeAnalyzer/advFixture";
|
||||
|
||||
Reference in New Issue
Block a user