diff --git a/java/java-psi-api/src/com/intellij/psi/PsiCapturedWildcardType.java b/java/java-psi-api/src/com/intellij/psi/PsiCapturedWildcardType.java index 85fae4536e8a..6fe40d8a4a33 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiCapturedWildcardType.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiCapturedWildcardType.java @@ -99,7 +99,7 @@ public class PsiCapturedWildcardType extends PsiType { } else { return bound instanceof PsiCapturedWildcardType - ? ((PsiCapturedWildcardType)bound).getUpperBound() + ? PsiWildcardType.createSuper(myContext.getManager(), ((PsiCapturedWildcardType)bound).getUpperBound()) : PsiType.getJavaLangObject(myContext.getManager(), getResolveScope()); } } diff --git a/java/java-psi-api/src/com/intellij/psi/util/TypesDistinctProver.java b/java/java-psi-api/src/com/intellij/psi/util/TypesDistinctProver.java index df1be5851ec1..7ad51b26ffee 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/TypesDistinctProver.java +++ b/java/java-psi-api/src/com/intellij/psi/util/TypesDistinctProver.java @@ -146,7 +146,7 @@ public class TypesDistinctProver { if (superBoundClass instanceof PsiTypeParameter) return false; return !InheritanceUtil.isInheritorOrSelf(superBoundClass, extendsBoundClass, true); } - return true; + return provablyDistinct(extendsBound, superBound); } if (!type1.isBounded() || !type2.isBounded()) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA105846.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA105846.java index 8b9c700484c9..04d39bd4c2ce 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA105846.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA105846.java @@ -1,5 +1,6 @@ class MyClass { public static void main(Class clazz){ clazz = (Class) clazz.getSuperclass(); + clazz = clazz.getSuperclass(); } }