diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/PatternsInSwitchBlockHighlightingModel.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/PatternsInSwitchBlockHighlightingModel.java index 7931b6ae92fa..a89edc8453b8 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/PatternsInSwitchBlockHighlightingModel.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/PatternsInSwitchBlockHighlightingModel.java @@ -375,8 +375,6 @@ public class PatternsInSwitchBlockHighlightingModel extends SwitchBlockHighlight @NotNull PsiElement who, @NotNull PsiType selectorType) { boolean isOverWhomUnconditionalForSelector = JavaPsiPatternUtil.isUnconditionalForType(overWhom, selectorType); - boolean isWhoUnconditionalForSelector = who instanceof PsiCaseLabelElement whoCase && - JavaPsiPatternUtil.isUnconditionalForType(whoCase, selectorType); if (!isOverWhomUnconditionalForSelector && ((!(overWhom instanceof PsiExpression expression) || ExpressionUtils.isNullLiteral(expression)) && who instanceof PsiKeyword && @@ -387,12 +385,6 @@ public class PatternsInSwitchBlockHighlightingModel extends SwitchBlockHighlight // A 'case null, default' label dominates all other switch labels. return true; } - if (isWhoUnconditionalForSelector && !isOverWhomUnconditionalForSelector && - !(isInCaseNullDefaultLabel(overWhom) || - (overWhom instanceof PsiKeyword && PsiKeyword.DEFAULT.equals(overWhom.getText())) || - (overWhom instanceof PsiExpression expression && ExpressionUtils.isNullLiteral(expression)))) { - return true; - } if (who instanceof PsiCaseLabelElement currentElement) { if (JavaPsiPatternUtil.isGuarded(currentElement)) return false; if (isConstantLabelElement(overWhom)) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/UnconditionalForSelectTypeAndDominated.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/UnconditionalForSelectTypeAndDominated.java index b38c9300171d..29fd8ea27c13 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/UnconditionalForSelectTypeAndDominated.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/UnconditionalForSelectTypeAndDominated.java @@ -8,7 +8,7 @@ public class UnconditionalForSelectTypeAndDominated { private static void testAA(AA aa){ switch (aa) { case AA1 aa1 -> System.out.println(1); - case B aa1 -> System.out.println(1); + case B aa1 -> System.out.println(1); } } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsWithPrimitives/SwitchPrimitivePatternDominated.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsWithPrimitives/SwitchPrimitivePatternDominated.java index dc3eafdb14af..1caebf10d982 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsWithPrimitives/SwitchPrimitivePatternDominated.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsWithPrimitives/SwitchPrimitivePatternDominated.java @@ -1202,4 +1202,18 @@ public class SwitchPrimitivePatternDominated { case boolean b -> System.out.println("2");//error } } + + static void switchInteger(Integer i) { + switch (i) { + case Integer i2 -> System.out.println("int" + i2); + case long l1 -> System.out.println("long" + l1); + } + } + + static void switchDouble(double i) { + switch (i) { + case double i2 -> System.out.println("double" + i2); + case long l1 -> System.out.println("long" + l1); + } + } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsWithPrimitives/SwitchPrimitivePatternList.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsWithPrimitives/SwitchPrimitivePatternList.java index 858d5019d875..08d80609b671 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsWithPrimitives/SwitchPrimitivePatternList.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsWithPrimitives/SwitchPrimitivePatternList.java @@ -172,8 +172,8 @@ public class SwitchPrimitivePatternList { case short d -> System.out.println("1"); case int d -> System.out.println("1"); case long d -> System.out.println("1"); - case float d -> System.out.println("1"); - case double d -> System.out.println("1"); + case float d -> System.out.println("1"); + case double d -> System.out.println("1"); } }