diff options
Diffstat (limited to 'java/java-psi-api/src/com/intellij/psi/GenericsUtil.java')
-rw-r--r-- | java/java-psi-api/src/com/intellij/psi/GenericsUtil.java | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/java/java-psi-api/src/com/intellij/psi/GenericsUtil.java b/java/java-psi-api/src/com/intellij/psi/GenericsUtil.java index 52888f123215..c835a4171f74 100644 --- a/java/java-psi-api/src/com/intellij/psi/GenericsUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/GenericsUtil.java @@ -153,7 +153,7 @@ public class GenericsUtil { PsiType type2, Set<Couple<PsiType>> compared, PsiManager manager, - PsiClass nestedLayer, + PsiClass nestedLayer, PsiTypeParameter parameter) { Couple<PsiType> types = Couple.of(type1, type2); if (compared.contains(types)) { @@ -549,6 +549,14 @@ public class GenericsUtil { return false; } } + + final PsiClass extendsBoundClass = PsiUtil.resolveClassInClassTypeOnly(extendsBound); + final PsiClass boundBoundClass = PsiUtil.resolveClassInClassTypeOnly(boundBound); + if (boundBoundClass != null && extendsBoundClass != null && !boundBoundClass.isInterface() && !extendsBoundClass.isInterface()) { + return !InheritanceUtil.isInheritorOrSelf(boundBoundClass, extendsBoundClass, true) && + !InheritanceUtil.isInheritorOrSelf(extendsBoundClass, boundBoundClass, true); + } + return !TypeConversionUtil.areTypesConvertible(boundBound, extendsBound) && !TypeConversionUtil.areTypesConvertible(extendsBound, boundBound); } |