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");
}
}