From afe84f8eedc521c0a133c56b2311d37dbcd19b22 Mon Sep 17 00:00:00 2001 From: Mikhail Pyltsin Date: Fri, 14 Jul 2023 14:34:51 +0200 Subject: [PATCH] [java-highlighting] IDEA-324474 Highlight unreachable statement for exhaustive switch. Tests GitOrigin-RevId: 97f525a579bd45c6863a6662142f26193e7e2429 --- .../ReachabilityStatement.java | 48 +++++++++++++++++++ ...ightPatternsForSwitchHighlightingTest.java | 3 ++ 2 files changed, 51 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/ReachabilityStatement.java diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/ReachabilityStatement.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/ReachabilityStatement.java new file mode 100644 index 000000000000..b7aa6bab8e66 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/ReachabilityStatement.java @@ -0,0 +1,48 @@ +public class Switches { + + enum E { + A, B + } + + int testReachability(E e) { + switch (e) { + case E d when d == E.A: + return 1; + case A: + return -1; + case B: + return -2; + } + return 1; + } + + sealed interface T { + } + + final class T1 implements T { + } + + final class T2 implements T { + } + + void testReachability2(T i) { + switch (i) { + case T1 f: + throw new RuntimeException(); + case T2 s: + throw new RuntimeException(); + } + System.out.println(); + } + + class Reachability2{ + sealed interface T{} + final class T1 implements T{} + + int test(T t) { + switch (t) { + case T1 t1: return 2; + } + } + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightPatternsForSwitchHighlightingTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightPatternsForSwitchHighlightingTest.java index 621218fdfd6b..0412d3a161af 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightPatternsForSwitchHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightPatternsForSwitchHighlightingTest.java @@ -114,6 +114,9 @@ public class LightPatternsForSwitchHighlightingTest extends LightJavaCodeInsight public void testReachability() { doTest(); } + public void testReachabilityStatement() { + doTest(); + } public void testEffectivelyFinal() { IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_20_PREVIEW, this::doTest);