add non-accessible warnings for super classes of params/return types

This commit is contained in:
Anna.Kozlova
2018-01-17 17:39:41 +01:00
parent 9face5277c
commit 8f5e5270b8
2 changed files with 35 additions and 6 deletions
@@ -1561,12 +1561,13 @@ public class GenericsHighlightUtil {
}
}
boolean isInLibrary = !index.isInContent(vFile);
for (PsiClassType superType : aClass.getSuperTypes()) {
final String notAccessibleMessage = isTypeAccessible(superType, classes, !isInLibrary, resolveScope, factory);
if (notAccessibleMessage != null) {
return notAccessibleMessage;
}
}
boolean isInLibrary = !index.isInContent(vFile);
for (PsiClassType superType : aClass.getSuperTypes()) {
final String notAccessibleMessage = isTypeAccessible(superType, classes, checkParameters && !isInLibrary, resolveScope, factory);
if (notAccessibleMessage != null) {
return notAccessibleMessage;
}
}
}
@@ -88,6 +88,34 @@ public class Usage {
myFixture.checkHighlighting()
}
void "test class qualifier with inaccessible super of return type"() {
def mod1 = PsiTestUtil.addModule(project, JavaModuleType.moduleType, "mod1", myFixture.tempDirFixture.findOrCreateDir("mod1"))
def mod2 = PsiTestUtil.addModule(project, JavaModuleType.moduleType, "mod2", myFixture.tempDirFixture.findOrCreateDir("mod2"))
ModuleRootModificationUtil.addDependency(mod1, myModule)
ModuleRootModificationUtil.addDependency(mod2, mod1)
myFixture.addClass"public class Class0 {}"
myFixture.addFileToProject "mod1/Class1.java", '''
public class Class1 extends Class0 {}
'''
myFixture.addFileToProject "mod1/Factory.java", '''
public class Factory {
public static Class1 create() {return null;}
}
'''
myFixture.addFileToProject "mod2/Usage.java", '''
public class Usage {
{
<error descr="Cannot access Class0">Factory.create</error>();
}
}
'''
myFixture.configureFromTempProjectFile "mod2/Usage.java"
myFixture.checkHighlighting()
}
void "test use original place classpath for new expression type resolving"() {
addTwoModules()