diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/SwitchBlockHighlightingModel.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/SwitchBlockHighlightingModel.java index 1a269e891ee6..66c1cc816312 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/SwitchBlockHighlightingModel.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/SwitchBlockHighlightingModel.java @@ -452,7 +452,7 @@ public class SwitchBlockHighlightingModel { private HighlightInfo checkLabelAndSelectorCompatibility(@NotNull PsiCaseLabelElement label) { if (label instanceof PsiDefaultCaseLabelElement) return null; if (isNullType(label)) { - if (!(mySelectorType instanceof PsiClassType) && !isNullType(mySelector)) { + if (mySelectorType instanceof PsiPrimitiveType && !isNullType(mySelector)) { return createError(label, JavaErrorBundle.message("incompatible.switch.null.type", "null", JavaHighlightUtil.formatType(mySelectorType))); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/PatternMatchingInSwitch.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/PatternMatchingInSwitch.java index 60c163d798f9..0a0ceeeaa7c1 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/PatternMatchingInSwitch.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/PatternMatchingInSwitch.java @@ -183,6 +183,18 @@ class Main { case ((((List l)) && Math.random() > 0.5)): break; } + + switch (list1.get(0)) { + case null: {} + default: {} + } + + switch (new int[0]) { + case null: {} + default: {} + } + + switch (list2) { case List l: break;