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 extends String> point1, Point super String> point2) {
switch (point1) {
case Point>() -> {}