From 8f5e5270b83e1ee3f35b7df2f5612c93b93d3537 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Wed, 17 Jan 2018 17:30:21 +0100 Subject: [PATCH] add non-accessible warnings for super classes of params/return types --- .../impl/analysis/GenericsHighlightUtil.java | 13 +++++---- .../MultipleModuleHighlightingTest.groovy | 28 +++++++++++++++++++ 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java index af3b0620dbb1..959e615b2366 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java @@ -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; } } } 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 912842d1a576..997a4e37cf59 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/MultipleModuleHighlightingTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/MultipleModuleHighlightingTest.groovy @@ -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 { + { + Factory.create(); + } +} +''' + + myFixture.configureFromTempProjectFile "mod2/Usage.java" + myFixture.checkHighlighting() + } + void "test use original place classpath for new expression type resolving"() { addTwoModules()