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 5696b8ba0d63..5d2c6aab7467 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 @@ -58,6 +58,11 @@ public class TypesDistinctProver { proveArrayTypeDistinct(((PsiWildcardType)type1).getManager().getProject(), (PsiArrayType)extendsBound, type2)) return true; final PsiClass boundClass1 = PsiUtil.resolveClassInType(extendsBound); if (boundClass1 == null) return false; + + if (CommonClassNames.JAVA_LANG_OBJECT.equals(psiClass2.getQualifiedName())) { + return !CommonClassNames.JAVA_LANG_OBJECT.equals(boundClass1.getQualifiedName()); + } + return proveExtendsBoundsDistinct(type1, type2, boundClass1, psiClass2); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA105695.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA105695.java new file mode 100644 index 000000000000..ab282994a8e3 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA105695.java @@ -0,0 +1,10 @@ +import java.util.Map; + +public class Test { + void bar(Prop p) { + Map map = (Map)p; + } +} + +abstract class Hashtble implements Map {} +abstract class Prop extends Hashtble{} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java index cf73a8cd1910..0527f38a76e1 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java @@ -206,6 +206,7 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase { public void testIDEA86875() { doTest5(false); } public void testIDEA103760(){ doTest5(false); } public void testIDEA105846(){ doTest5(false); } + public void testIDEA105695(){ doTest5(false); } public void testWildcardsOnRawTypes() { doTest5(false); } public void testDisableWithinBoundsCheckForSuperWildcards() {