From 8344605e413609b7501b0445e9792a1fb718e9e8 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Wed, 21 May 2025 15:58:00 +0200 Subject: [PATCH] [java-psi] LambdaUtil.getFunctionalInterfaceType: force returning null type for variables with inferred type Otherwise, we may have a chicken-egg problem, when the inferred type is computed using its initializer and the initializer type is computed using the variable type which is not computed yet Fixes IDEA-371650 [Java] test problem com.intellij.java.codeInsight.daemon.LightAdvLVTIHighlightingTest.testSimpleAvailability: Non-idempotent computation GitOrigin-RevId: 69f4608ea9ba6ce98cda8c02acdc51134d4c5552 --- java/java-psi-api/src/com/intellij/psi/LambdaUtil.java | 4 +++- .../java/codeInsight/daemon/LightAdvLVTIHighlightingTest.java | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java index 8c6c2f03deb5..c9f9f7817c4c 100644 --- a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java @@ -390,7 +390,9 @@ public final class LambdaUtil { return castType; } else if (parent instanceof PsiVariable) { - return ((PsiVariable)parent).getType(); + PsiVariable variable = (PsiVariable)parent; + PsiTypeElement typeElement = variable.getTypeElement(); + return typeElement != null && typeElement.isInferredType() ? null : variable.getType(); } else if (parent instanceof PsiAssignmentExpression && expression instanceof PsiExpression && !PsiUtil.isOnAssignmentLeftHand((PsiExpression)expression)) { final PsiExpression lExpression = ((PsiAssignmentExpression)parent).getLExpression(); 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 f74821ec8ec0..f8e974651cdd 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 @@ -8,7 +8,6 @@ import com.intellij.codeInspection.AnonymousCanBeLambdaInspection; import com.intellij.codeInspection.redundantCast.RedundantCastInspection; import com.intellij.openapi.projectRoots.JavaSdkVersion; import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.util.RecursionManager; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.CommonClassNames; import com.intellij.psi.PsiClass; @@ -43,7 +42,6 @@ public class LightAdvLVTIHighlightingTest extends LightDaemonAnalyzerTestCase { } public void testSimpleAvailability() { - RecursionManager.disableMissedCacheAssertions(getTestRootDisposable()); doTest(); }