From fad349d791de78165b5d9ff4d4ab1589bdd10fe9 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 19 Jun 2018 08:13:00 +0300 Subject: [PATCH] lvti: don't resolve method calls to detect self-referenced (IDEA-194104) --- .../psi/impl/source/PsiTypeElementImpl.java | 3 +++ .../advLVTI/FailedInferenceWithLeftTypeVar.java | 15 +++++++++++++++ .../daemon/LightAdvLVTIHighlightingTest.java | 2 ++ 3 files changed, 20 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advLVTI/FailedInferenceWithLeftTypeVar.java diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiTypeElementImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiTypeElementImpl.java index ba114f6d4802..e6518a221550 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiTypeElementImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiTypeElementImpl.java @@ -198,6 +198,9 @@ public class PsiTypeElementImpl extends CompositePsiElement implements PsiTypeEl @Override public void visitReferenceExpression(PsiReferenceExpression expression) { super.visitReferenceExpression(expression); + if (expression.getParent() instanceof PsiMethodCallExpression) { + return; + } if (expression.resolve() == parent) { referenced = true; } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advLVTI/FailedInferenceWithLeftTypeVar.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advLVTI/FailedInferenceWithLeftTypeVar.java new file mode 100644 index 000000000000..53dfe01e6cc5 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advLVTI/FailedInferenceWithLeftTypeVar.java @@ -0,0 +1,15 @@ +import java.lang.reflect.Method; +import java.util.LinkedHashMap; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +class MyTest { + + private void getMethods(final Stream stream) { + final var collector = Collectors.toMap(null, c -> { + System.out.println(c); + return new LinkedHashMap(); + }, (v1, v2) -> v2, null); + + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightAdvLVTIHighlightingTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightAdvLVTIHighlightingTest.java index a690966ca99c..663cb28b37f3 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightAdvLVTIHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightAdvLVTIHighlightingTest.java @@ -48,6 +48,8 @@ public class LightAdvLVTIHighlightingTest extends LightDaemonAnalyzerTestCase { public void testUpwardProjection() { doTest(); } + public void testFailedInferenceWithLeftTypeVar() { doTest(); } + public void testVarInLambdaParameters() { setLanguageLevel(LanguageLevel.JDK_11); doTest();