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 03101dbb85f3..aa48d6ccbd39 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 @@ -1494,21 +1494,23 @@ public class GenericsHighlightUtil { return "Cannot access " + HighlightUtil.formatClass(aClass); } - if (checkParameters && superType instanceof PsiClassType) { - for (PsiType psiType : ((PsiClassType)superType).getParameters()) { - final String notAccessibleMessage = isSuperTypeAccessible(psiType, classes, checkParameters, resolveScope, factory); + if (checkParameters) { + if (superType instanceof PsiClassType) { + for (PsiType psiType : ((PsiClassType)superType).getParameters()) { + final String notAccessibleMessage = isSuperTypeAccessible(psiType, classes, true, resolveScope, factory); + if (notAccessibleMessage != null) { + return notAccessibleMessage; + } + } + } + + for (PsiClassType type : aClass.getSuperTypes()) { + final String notAccessibleMessage = isSuperTypeAccessible(type, classes, true, resolveScope, factory); if (notAccessibleMessage != null) { return notAccessibleMessage; } } } - - for (PsiClassType type : aClass.getSuperTypes()) { - final String notAccessibleMessage = isSuperTypeAccessible(type, classes, checkParameters, resolveScope, factory); - if (notAccessibleMessage != null) { - return notAccessibleMessage; - } - } } return null; } diff --git a/java/java-tests/testData/codeInsight/multipleJdks/java7/p/DeclaredTypeOfVariableImplementsUnknownType.java b/java/java-tests/testData/codeInsight/multipleJdks/java7/p/DeclaredTypeOfVariableImplementsUnknownType.java index 04012ce23c3c..ed498645c20b 100644 --- a/java/java-tests/testData/codeInsight/multipleJdks/java7/p/DeclaredTypeOfVariableImplementsUnknownType.java +++ b/java/java-tests/testData/codeInsight/multipleJdks/java7/p/DeclaredTypeOfVariableImplementsUnknownType.java @@ -8,6 +8,8 @@ abstract class B { a.bar(); a.myField; + + a.a(); } void f(java.util.List a) { diff --git a/java/java-tests/testData/codeInsight/multipleJdks/java8/p/DeclaredTypeOfVariableImplementsUnknownType.java b/java/java-tests/testData/codeInsight/multipleJdks/java8/p/DeclaredTypeOfVariableImplementsUnknownType.java index f22c03b06c50..045f753ef92b 100644 --- a/java/java-tests/testData/codeInsight/multipleJdks/java8/p/DeclaredTypeOfVariableImplementsUnknownType.java +++ b/java/java-tests/testData/codeInsight/multipleJdks/java8/p/DeclaredTypeOfVariableImplementsUnknownType.java @@ -8,4 +8,6 @@ public abstract class A implements List> { public void bar() {} public Stream myField; + + public A a() {} } \ No newline at end of file