From 19ccd895cb4c2d03076d55f4ba2c3253fd2acabb Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 7 Dec 2010 17:51:28 +0300 Subject: [PATCH] super wildcard processing (IDEA-62529 ) --- .../genericsHighlighting/WildcardTypes.java | 11 +++++++++++ .../com/intellij/psi/util/TypesDistinctProver.java | 1 + 2 files changed, 12 insertions(+) diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/WildcardTypes.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/WildcardTypes.java index 9cbac324b412..5145e806c4b4 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/WildcardTypes.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/WildcardTypes.java @@ -161,4 +161,15 @@ class CollectionHelper { final Collection numbers4 = CollectionHelper.convertUp(integers4); numbers4.hashCode(); } +} + +//IDEA-62529 +class My { + private Class getSuperclass(){ + return null; + } + + public void test() { + if (getSuperclass() == List.class); + } } \ No newline at end of file diff --git a/java/openapi/src/com/intellij/psi/util/TypesDistinctProver.java b/java/openapi/src/com/intellij/psi/util/TypesDistinctProver.java index 3be122fe9fbf..37f7ab9e2e8a 100644 --- a/java/openapi/src/com/intellij/psi/util/TypesDistinctProver.java +++ b/java/openapi/src/com/intellij/psi/util/TypesDistinctProver.java @@ -60,6 +60,7 @@ public class TypesDistinctProver { final PsiType superBound = ((PsiWildcardType)type1).getSuperBound(); if (superBound instanceof PsiArrayType && proveArrayTypeDistinct(((PsiWildcardType)type1).getManager().getProject(), (PsiArrayType)superBound, type2)) return true; + final PsiClass boundClass1 = PsiUtil.resolveClassInType(superBound); if (boundClass1 == null || boundClass1 instanceof PsiTypeParameter) return false; return !InheritanceUtil.isInheritorOrSelf(boundClass1, psiClass2, true);