From 9face5277ce4c35b22ee4929b0e54a56e1920a06 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Wed, 17 Jan 2018 16:16:08 +0100 Subject: [PATCH] add non-accessible warnings for static calls --- .../impl/analysis/HighlightVisitorImpl.java | 6 +++++ .../MultipleModuleHighlightingTest.groovy | 25 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java index 4cb22e278e82..ff05c213477e 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java @@ -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)); diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/MultipleModuleHighlightingTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/MultipleModuleHighlightingTest.groovy index 757d7b4ac3f6..912842d1a576 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/MultipleModuleHighlightingTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/MultipleModuleHighlightingTest.groovy @@ -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 { + { + Class1.create(); + } +} +''' + + myFixture.configureFromTempProjectFile "mod2/Usage.java" + myFixture.checkHighlighting() + } + void "test use original place classpath for new expression type resolving"() { addTwoModules()