Files
openide/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/PatternsInSwitchIn20Java.java
Andrey Cherkasov b56985873a [java-highlighting] JEP 432: A 'case null, default' label dominates all other switch labels
A 'default' label dominates a case label with a case pattern, and it also dominates a case label with a 'null' case constant.

IDEA-309549

GitOrigin-RevId: 6877992c530e41a1200ea7c20d6405da4be0324b
2022-12-29 00:57:49 +00:00

41 lines
1.8 KiB
Java

class X {
void testDominance1(Object obj) {
switch (obj) {
default -> System.out.println("default");
case <error descr="Label is dominated by a preceding case label 'default'">Integer i</error> -> System.out.println("Integer");
case <error descr="Label is dominated by a preceding case label 'default'">String s when s.isEmpty()</error> -> System.out.println("empty String");
case <error descr="Label is dominated by a preceding case label 'default'">null</error> -> System.out.println("null");
}
}
void testDominance2(Object obj) {
switch (obj) {
case null, default -> System.out.println("null or default");
case <error descr="Label is dominated by a preceding case label 'default'">Integer i</error> -> System.out.println("Integer");
case <error descr="Label is dominated by a preceding case label 'default'">String s when s.isEmpty()</error> -> System.out.println("empty String");
}
}
void testDominance3(String s) {
switch (s) {
default -> System.out.println("default");
case "blah blah blah" -> System.out.println("blah blah blah");
case <error descr="Label is dominated by a preceding case label 'default'">null</error> -> System.out.println("null");
}
}
void testDominance4(String s) {
switch (s) {
case null, default -> System.out.println("null, default");
case <error descr="Label is dominated by a preceding case label 'default'">"blah blah blah"</error> -> System.out.println("blah blah blah");
}
}
void test(String s) {
switch (s) {
case null, <error descr="'switch' has both a total pattern and a default label">default</error> -> System.out.println("null, default");
case <error descr="'switch' has both a total pattern and a default label">String str</error> -> System.out.println("String");
}
}
}