From b6d5ec0315c1e825fcb34dbde0aa35beb8993edd Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 5 Oct 2020 11:42:54 +0200 Subject: [PATCH] java recursion prevention: don't detect switch expression type by target for old inference algorithm switch expressions are not applicable but they are parsable in older language levels, see LightAdvHighlightingJdk6Test.testUnsupportedFeatures GitOrigin-RevId: d9ce28f08c386705c5560bc283961822823afcb4 --- .../psi/impl/source/tree/java/PsiSwitchExpressionImpl.java | 3 ++- .../util/src/com/intellij/openapi/util/RecursionManager.java | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiSwitchExpressionImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiSwitchExpressionImpl.java index fa3163a064f5..aefd50e55081 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiSwitchExpressionImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiSwitchExpressionImpl.java @@ -32,7 +32,8 @@ public class PsiSwitchExpressionImpl extends PsiSwitchBlockImpl implements PsiSw @Override public PsiType getType() { - if (PsiPolyExpressionUtil.isPolyExpression(this) && + if (PsiUtil.isLanguageLevel8OrHigher(this) && + PsiPolyExpressionUtil.isPolyExpression(this) && !MethodCandidateInfo.isOverloadCheck(PsiUtil.skipParenthesizedExprUp(getParent()))) { return InferenceSession.getTargetType(this); } diff --git a/platform/util/src/com/intellij/openapi/util/RecursionManager.java b/platform/util/src/com/intellij/openapi/util/RecursionManager.java index 2f729f0d7a02..b9bb38fd09d0 100644 --- a/platform/util/src/com/intellij/openapi/util/RecursionManager.java +++ b/platform/util/src/com/intellij/openapi/util/RecursionManager.java @@ -373,7 +373,6 @@ public final class RecursionManager { "com.intellij.lang.javascript.psi.types.JSTypeBaseImpl.substitute(", // IDEA-228814 - "com.intellij.psi.infos.MethodCandidateInfo.getPertinentApplicabilityLevel(", "com.intellij.psi.ThreadLocalTypes.performWithTypes(", // IDEA-212671