From 6e4595e7bdf87c4880442378e21973750476cb72 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 31 Oct 2014 13:20:24 +0100 Subject: [PATCH] capture getClass() method type (IDEA-130973) --- .../src/com/intellij/psi/util/PsiTypesUtil.java | 5 +---- .../advHighlighting7/ClassLiteral.java | 15 +++++++++++++++ .../advHighlighting7/MultiCatch.java | 4 ++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiTypesUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiTypesUtil.java index 906b576e3369..e7f6d5706b9c 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiTypesUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiTypesUtil.java @@ -166,10 +166,7 @@ public class PsiTypesUtil { qualifierType = JavaPsiFacade.getInstance(project).getElementFactory().createType((PsiClass)parent.getPsi()); } } - PsiElement parent = call.getParent(); - boolean captureTopLevelWildcards = parent instanceof PsiReferenceExpression && parent.getParent() instanceof PsiMethodCallExpression || - parent instanceof PsiExpressionList; - return createJavaLangClassType(methodExpression, qualifierType, captureTopLevelWildcards); + return createJavaLangClassType(methodExpression, qualifierType, true); } return null; } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/ClassLiteral.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/ClassLiteral.java index 97673a5f25ee..659f721faa69 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/ClassLiteral.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/ClassLiteral.java @@ -11,3 +11,18 @@ class Example { return getClass() == obj.getClass(); } } + +class Foo { + + public static Class> fFoo(final Foo foo) { + Class> fooClass = foo.getClass(); + fooClass = foo.getClass(); + return foo.getClass(); + } + + public static Class> fFoo1(final Foo foo) { + Class> fooClass = foo.getClass(); + fooClass = foo.getClass(); + return foo.getClass(); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/MultiCatch.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/MultiCatch.java index 83b2d4976ffd..a7a73af4b45a 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/MultiCatch.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/MultiCatch.java @@ -60,8 +60,8 @@ abstract class C { try { g(); } catch (IE1 | IE2 e) { Class clazz1 = e.getClass(); - Class clazz2 = e.getClass(); - Class clazz3 = e.getClass(); + Class clazz2 = e.getClass(); + Class clazz3 = e.getClass(); } try { f(); }