add non-accessible warnings for static calls

This commit is contained in:
Anna.Kozlova
2018-01-17 17:39:41 +01:00
parent 1417be6a61
commit 9face5277c
2 changed files with 31 additions and 0 deletions
@@ -1308,6 +1308,12 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
type = ((PsiCapturedWildcardType)type).getUpperBound();
}
PsiClass psiClass = PsiUtil.resolveClassInType(type);
if (psiClass == null && qualifierExpression instanceof PsiReferenceExpression) {
PsiElement resolve = ((PsiReferenceExpression)qualifierExpression).resolve();
if (resolve instanceof PsiClass) {
psiClass = (PsiClass)resolve;
}
}
if (psiClass != null) {
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkClassSupersAccessibility(psiClass, expression));
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkMemberSignatureTypesAccessibility(expression));
@@ -63,6 +63,31 @@ class Class3 {
myFixture.checkHighlighting()
}
void "test class qualifier with inaccessible super"() {
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 {
public static Class1 create() {return null;}
}
'''
myFixture.addFileToProject "mod2/Usage.java", '''
public class Usage {
{
<error descr="Cannot access Class0">Class1.create</error>();
}
}
'''
myFixture.configureFromTempProjectFile "mod2/Usage.java"
myFixture.checkHighlighting()
}
void "test use original place classpath for new expression type resolving"() {
addTwoModules()