accessibility: don't check supers during method/field type check

This commit is contained in:
Anna Kozlova
2016-02-19 19:18:43 +01:00
parent 779d43a6df
commit e6a49d0ab6
3 changed files with 16 additions and 10 deletions
@@ -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;
}
@@ -8,6 +8,8 @@ abstract class B {
a.bar();
<error descr="Cannot access java.util.stream.Stream">a.myField</error>;
a.a();
}
void f(java.util.List<? extends A> a) {
@@ -8,4 +8,6 @@ public abstract class A implements List<Stream<String>> {
public void bar() {}
public Stream<String> myField;
public A a() {}
}