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 a55665e51c81..4cb16ab1216d 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 @@ -951,6 +951,7 @@ public class PatternsInSwitchBlockHighlightingModel extends SwitchBlockHighlight AtomicBoolean reported = new AtomicBoolean(); if (switchModel instanceof PatternsInSwitchBlockHighlightingModel patternsInSwitchModel) { if (findUnconditionalPatternForType(labelElements, switchModel.mySelectorType) != null) return COMPLETE_WITH_UNCONDITIONAL; + if (switchModel.getSwitchSelectorKind() == SelectorKind.BOOLEAN && hasTrueAndFalse(labelElements)) return COMPLETE_WITH_UNCONDITIONAL; if (!needToCheckCompleteness && !isEnumSelector) return INCOMPLETE; //it is necessary, // because deconstruction patterns don't cover cases when some of their components are null and deconstructionPattern too diff --git a/java/java-tests/testData/ig/com/siyeh/igtest/controlflow/switch_statements_with_patterns/TrueFalsePatterns.java b/java/java-tests/testData/ig/com/siyeh/igtest/controlflow/switch_statements_with_patterns/TrueFalsePatterns.java new file mode 100644 index 000000000000..f14179053d21 --- /dev/null +++ b/java/java-tests/testData/ig/com/siyeh/igtest/controlflow/switch_statements_with_patterns/TrueFalsePatterns.java @@ -0,0 +1,10 @@ +package com.siyeh.igtest.controlflow.switch_statements_without_default; + +class TrueFalsePatterns { + static void foo(Boolean b) { + switch (b) { + case true -> System.out.println("It's true"); + case false -> System.out.println("It's false"); + } + } +} diff --git a/java/java-tests/testSrc/com/siyeh/ig/controlflow/SwitchStatementsWithPatternsInspectionTest.java b/java/java-tests/testSrc/com/siyeh/ig/controlflow/SwitchStatementsWithPatternsInspectionTest.java index dfdd5720f2f7..8a089e661862 100644 --- a/java/java-tests/testSrc/com/siyeh/ig/controlflow/SwitchStatementsWithPatternsInspectionTest.java +++ b/java/java-tests/testSrc/com/siyeh/ig/controlflow/SwitchStatementsWithPatternsInspectionTest.java @@ -24,7 +24,13 @@ public class SwitchStatementsWithPatternsInspectionTest extends LightJavaInspect myInspection.m_ignoreFullyCoveredEnums = false; doTest(); } - + + public void testTrueFalsePatterns() { + String name = getTestName(false); + myFixture.configureByFile(name + ".java"); + myFixture.testHighlighting(true, true, true); + } + @Nullable @Override protected InspectionProfileEntry getInspection() { @@ -33,6 +39,6 @@ public class SwitchStatementsWithPatternsInspectionTest extends LightJavaInspect @Override protected @NotNull LightProjectDescriptor getProjectDescriptor() { - return JAVA_21; + return JAVA_23; } } \ No newline at end of file