IDEA-98936 (classes in default (unnamed) package cannot be referenced from other packages)

This commit is contained in:
Roman Shevchenko
2013-01-28 16:01:47 +04:00
parent ff32f3d934
commit 1da520f9f0
4 changed files with 17 additions and 1 deletions

View File

@@ -395,8 +395,18 @@ public class PsiJavaCodeReferenceElementImpl extends CompositePsiElement impleme
// TODO: support type parameters in FQ names
String text = getTextSkipWhiteSpaceAndComments();
if (StringUtil.isEmptyOrSpaces(text)) return JavaResolveResult.EMPTY_ARRAY;
PsiClass aClass = JavaPsiFacade.getInstance(getProject()).findClass(text, getResolveScope());
if (aClass == null) return JavaResolveResult.EMPTY_ARRAY;
if (!isQualified() && text.equals(aClass.getQualifiedName())) {
PsiFile file = getContainingFile();
if (file instanceof PsiJavaFile && !((PsiJavaFile)file).getPackageName().isEmpty()) {
// classes in default (unnamed) package cannot be referenced from other packages
return JavaResolveResult.EMPTY_ARRAY;
}
}
return new JavaResolveResult[]{new CandidateInfo(aClass, updateSubstitutor(PsiSubstitutor.EMPTY, aClass), this, false)};
}
case CLASS_IN_QUALIFIED_NEW_KIND: {

View File

@@ -1,4 +1,5 @@
public class Test {
public Test(int i) {
new x();
}
}

View File

@@ -157,7 +157,7 @@ public class AdvHighlightingTest extends DaemonAnalyzerTestCase {
doTest(BASE_PATH + "/alreadyImportedClass/pack/AlreadyImportedClass.java", BASE_PATH + "/alreadyImportedClass", false, false);
}
public void testImportDefaultPackage() throws Exception {
public void testImportDefaultPackage1() throws Exception {
doTest(BASE_PATH + "/importDefaultPackage/x/Usage.java", BASE_PATH + "/importDefaultPackage", false, false);
}
@@ -165,6 +165,10 @@ public class AdvHighlightingTest extends DaemonAnalyzerTestCase {
doTest(BASE_PATH + "/importDefaultPackage/x/ImportOnDemandUsage.java", BASE_PATH + "/importDefaultPackage", false, false);
}
public void testImportDefaultPackage3() throws Exception {
doTest(BASE_PATH + "/importDefaultPackage/Test.java", BASE_PATH + "/importDefaultPackage", false, false);
}
public void testImportDefaultPackageInvalid() throws Exception {
doTest(BASE_PATH + "/importDefaultPackage/x/InvalidUse.java", BASE_PATH + "/importDefaultPackage", false, false);
}