From 566ef9c3abcc42734fc63332165f9bd03594afc8 Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 22 Apr 2013 14:26:41 +0200 Subject: [PATCH] check for upper bound in wrapped wildcard (IDEA-105846) --- .../src/com/intellij/psi/PsiCapturedWildcardType.java | 10 +++++++++- .../genericsHighlighting/IDEA105846.java | 5 +++++ .../codeInsight/daemon/GenericsHighlightingTest.java | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA105846.java 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 560dcbd948dc..85fae4536e8a 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiCapturedWildcardType.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiCapturedWildcardType.java @@ -93,7 +93,15 @@ public class PsiCapturedWildcardType extends PsiType { } public PsiType getUpperBound () { - return myExistential.isExtends() ? myExistential.getBound() : PsiType.getJavaLangObject(myContext.getManager(), getResolveScope()); + final PsiType bound = myExistential.getBound(); + if (myExistential.isExtends()) { + return bound; + } + else { + return bound instanceof PsiCapturedWildcardType + ? ((PsiCapturedWildcardType)bound).getUpperBound() + : PsiType.getJavaLangObject(myContext.getManager(), getResolveScope()); + } } public PsiWildcardType getWildcard() { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA105846.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA105846.java new file mode 100644 index 000000000000..8b9c700484c9 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA105846.java @@ -0,0 +1,5 @@ +class MyClass { + public static void main(Class clazz){ + clazz = (Class) clazz.getSuperclass(); + } +} 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 f2a6e3af1fa7..cf73a8cd1910 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java @@ -205,6 +205,7 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase { public void testIDEA99347() { doTest5(false); } public void testIDEA86875() { doTest5(false); } public void testIDEA103760(){ doTest5(false); } + public void testIDEA105846(){ doTest5(false); } public void testWildcardsOnRawTypes() { doTest5(false); } public void testDisableWithinBoundsCheckForSuperWildcards() {