From 7933aad9740e4abe3c8cb13c8c7a2049690613a8 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 15 Dec 2014 20:36:03 +0100 Subject: [PATCH] captures: distinguish by type parameters in method return type evaluation context --- .../src/com/intellij/psi/PsiCapturedWildcardType.java | 2 +- .../DistinguishWildcardCapturesAlsoByMethodCalls.java | 8 ++++++++ .../codeInsight/daemon/GenericsHighlightingTest.java | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/DistinguishWildcardCapturesAlsoByMethodCalls.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 c94709ee164a..c3fe6c7775ac 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiCapturedWildcardType.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiCapturedWildcardType.java @@ -77,7 +77,7 @@ public class PsiCapturedWildcardType extends PsiType.Stub { return false; } - if (myContext instanceof PsiReferenceExpression && !Comparing.equal(myParameter, captured.myParameter)) { + if ((myContext instanceof PsiReferenceExpression || myContext instanceof PsiMethodCallExpression) && !Comparing.equal(myParameter, captured.myParameter)) { return false; } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/DistinguishWildcardCapturesAlsoByMethodCalls.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/DistinguishWildcardCapturesAlsoByMethodCalls.java new file mode 100644 index 000000000000..26ebaf47df1f --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/DistinguishWildcardCapturesAlsoByMethodCalls.java @@ -0,0 +1,8 @@ +class B {} +abstract class A { + void baz(B a) {} + abstract B foo(); + void bar(A a) { + baz(a.foo()); + } +} \ 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 663f674e813b..1e7629aefca6 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java @@ -442,6 +442,10 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); } + public void testDistinguishWildcardCapturesAlsoByMethodCalls() throws Exception { + doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); + } + public void testJavaUtilCollections_NoVerify() throws Exception { PsiClass collectionsClass = getJavaFacade().findClass("java.util.Collections", GlobalSearchScope.moduleWithLibrariesScope(getModule())); assertNotNull(collectionsClass);