Files
openide/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/SwitchExhaustivenessForDirectClassesIn21Java.java
Mikhail Pyltsin 50a055ff5c [java-highlighting] IDEA-325165 Take into account direct superclass for covered enum or record pattern classes
GitOrigin-RevId: 7176453ec46c0156391b064e60bf9c0f7f291d42
2023-07-13 13:28:59 +00:00

63 lines
1.5 KiB
Java

import java.util.Optional;
class Main {
class Case1{
interface I{}
sealed interface T permits A, B{}
sealed interface A extends T permits EN{}
enum EN implements A, I {EN_A, EN_B,}
final class B implements T {
}
public static void t(T t) {
switch (t) { //not error
case EN.EN_A -> System.out.println(3);
case EN.EN_B -> System.out.println(3);
case I i -> System.out.println(1);
case B b -> System.out.println(2);
}
}
public static void t2(T t) {
switch (<error descr="'switch' statement does not cover all possible input values">t</error>) { //error
case EN.EN_B -> System.out.println(3);
case I i -> System.out.println(1);
case B b -> System.out.println(2);
}
}
}
class Case2{
interface I{}
sealed interface T permits A, B{}
sealed interface A extends T permits R{}
record R(CharSequence s) implements A, I{}
final class B implements T {
}
public static void t(T t) {
switch (t) { //not error
case R(CharSequence s)-> System.out.println(3);
case I i -> System.out.println(1);
case B b -> System.out.println(2);
}
}
public static void t2(T t) {
switch (<error descr="'switch' statement does not cover all possible input values">t</error>) { //error
case R(String s)-> System.out.println(3);
case I i -> System.out.println(1);
case B b -> System.out.println(2);
}
}
}
}