summaryrefslogtreecommitdiff
path: root/java/java-psi-api/src/com/intellij/psi/GenericsUtil.java
diff options
context:
space:
mode:
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.java10
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);
}