diff --git a/java/codeserver/highlighting/src/com/intellij/java/codeserver/highlighting/SwitchChecker.java b/java/codeserver/highlighting/src/com/intellij/java/codeserver/highlighting/SwitchChecker.java index e4c29fdeb066..60a6aaf8d5dc 100644 --- a/java/codeserver/highlighting/src/com/intellij/java/codeserver/highlighting/SwitchChecker.java +++ b/java/codeserver/highlighting/src/com/intellij/java/codeserver/highlighting/SwitchChecker.java @@ -294,13 +294,10 @@ final class SwitchChecker { if (labelElementList == null) continue; for (PsiCaseLabelElement label : labelElementList.getElements()) { if (!(label instanceof PsiParenthesizedExpression) && ExpressionUtil.isNullLiteral(label)) { - if (selectorType instanceof PsiPrimitiveType) { - if (!PsiTypes.nullType().equals(selectorType)) { - myVisitor.report(JavaErrorKinds.SWITCH_NULL_TYPE_INCOMPATIBLE.create(label, selectorType)); - return; - } + if (selectorType instanceof PsiPrimitiveType && !PsiTypes.nullType().equals(selectorType)) { + myVisitor.report(JavaErrorKinds.SWITCH_NULL_TYPE_INCOMPATIBLE.create(label, selectorType)); } - return; + continue; } if (label instanceof PsiExpression expr) { if (selectorType.equals(PsiTypes.nullType())) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/PatternsInSwitchIn21Java.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/PatternsInSwitchIn21Java.java index 1ee7d4349abf..a5310f4e278a 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/PatternsInSwitchIn21Java.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/PatternsInSwitchIn21Java.java @@ -27,6 +27,22 @@ class X { }; } + boolean method(Long l) { + return switch (l) { + case null -> false; + case long ll when (ll & 1) > 0 -> true; + default -> false; + }; + } + + boolean method(int l) { + return switch (l) { + case null -> false; + case long ll when (ll & 1) > 0 -> true; + default -> false; + }; + } + void switchTest3(Point point1, Point point2) { switch (point1) { case Point() -> {}