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 extends A> 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