show class/package conflict only if corresponding subdirectory contains classes so there could be usages with ambiguous imports

This commit is contained in:
Anna.Kozlova
2016-12-15 14:48:27 +01:00
parent 7f70a817b8
commit 08163051f3
4 changed files with 8 additions and 1 deletions
@@ -279,7 +279,7 @@ public class HighlightClassUtil {
if (directory instanceof PsiDirectory) {
String simpleName = aClass.getName();
PsiDirectory subDirectory = ((PsiDirectory)directory).findSubdirectory(simpleName);
if (subDirectory != null && simpleName.equals(subDirectory.getName())) {
if (subDirectory != null && simpleName.equals(subDirectory.getName()) && PsiTreeUtil.findChildOfType(subDirectory, PsiJavaFile.class) != null) {
String message = JavaErrorMessages.message("class.clashes.with.package", name);
TextRange range = HighlightNamesUtil.getClassDeclarationTextRange(aClass);
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(range).descriptionAndTooltip(message).create();
@@ -0,0 +1,3 @@
package pkg;
public class sub { }
@@ -307,6 +307,10 @@ public class AdvHighlightingTest extends DaemonAnalyzerTestCase {
doTest(BASE_PATH + "/packageClassClash2/pkg/Sub.java", BASE_PATH + "/packageClassClash2", false, false);
}
public void testPackageAndClassConflictNoClassInSubdir() throws Exception {
doTest(BASE_PATH + "/packageClassClashNoClassInDir/pkg/sub.java", BASE_PATH + "/packageClassClashNoClassInDir", false, false);
}
// todo[r.sh] IDEA-91596 (probably PJCRE.resolve() should be changed to qualifier-first model)
//public void testPackageAndClassConflict3() throws Exception {
// doTest(BASE_PATH + "/packageClassClash3/test/Test.java", BASE_PATH + "/packageClassClash3", false, false);