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 a9aa2ce0bcbb..0f328280b1c4 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 @@ -97,7 +97,7 @@ public class PsiSwitchExpressionImpl extends PsiSwitchBlockImpl implements PsiSw leastUpperBound = type; } else { - leastUpperBound = GenericsUtil.getLeastUpperBound(leastUpperBound, leastUpperBound, getManager()); + leastUpperBound = GenericsUtil.getLeastUpperBound(type, leastUpperBound, getManager()); } } return leastUpperBound != null ? PsiUtil.captureToplevelWildcards(leastUpperBound, this) : null; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting12/SimpleInferenceCases.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting12/SimpleInferenceCases.java index 9ca93564e5b5..1fdd00153c61 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting12/SimpleInferenceCases.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting12/SimpleInferenceCases.java @@ -108,4 +108,14 @@ no instance(s) of type variable(s) exist so that Integer conforms to String">() default -> throw new IllegalArgumentException(); }; } + + static void test(boolean b, int i) { + Class c = (b ? + switch (i) { + case 1 -> true; + default -> 0; + } : 1).getClass(); + + System.out.println(c.getCanonicalName()); + } } \ No newline at end of file