Files
openide/java/java-tests/testData/inspection/dataFlow/fixture/SwitchWithPrimitive.java
Mikhail Pyltsin 45160db0df [java-highlighting] IDEA-352588 Support JEP 455: highlighting for switch with primitives
GitOrigin-RevId: 06636352b202037ec3400b2f9763e101d8ed6042
2024-04-29 21:17:42 +00:00

58 lines
2.1 KiB
Java

package dfa;
public class SwitchWithPrimitive {
public static void main(String[] args) {
testTestPattern(2L);
System.out.println(withErasureSwitch(1));
System.out.println(exhaustiveByPrimitives(new RecordCharObj('1')));
}
public static int exhaustiveByPrimitives(RecordCharObj source) {
switch (source) {
case RecordCharObj(char source1) -> System.out.println("1");
case <warning descr="Switch label 'RecordCharObj(int source1)' is unreachable">RecordCharObj(int source1)</warning> -> System.out.println("1");
}
return 1;
}
record RecordCharObj(Character x) {
}
public static <T extends Integer> boolean withErasureSwitch(T i) {
return <warning descr="Condition 'switch (i) { case long a -> false; }' is always 'false'">switch (i) {
case <warning descr="Switch label 'long a' is the only reachable in the whole switch">long a</warning> -> false;
}</warning>;
}
private static void testTestPattern(Long l2) {
long l = 0;
switch (l) {
case <warning descr="Switch label 'int i' is the only reachable in the whole switch">int i</warning> -> System.out.println("1");
case long i -> System.out.println("2");
}
switch (l) {
case <warning descr="Switch label '0L' is the only reachable in the whole switch">0L</warning> -> System.out.println("2");
case 1L -> System.out.println("2");
case 2L -> System.out.println("2");
case int i -> System.out.println("1");
case long i -> System.out.println("1");
}
switch (l) {
case 1L -> System.out.println("2");
case 2L -> System.out.println("2");
case <warning descr="Switch label 'long i' is the only reachable in the whole switch">long i</warning> -> System.out.println("1");
}
switch (l2) {
case 0L -> System.out.println("2");
case 1L -> System.out.println("2");
case 2L -> System.out.println("2");
case long i -> System.out.println("1");
}
switch (l2) {
case 1L -> System.out.println("2");
case 2L -> System.out.println("2");
case long i -> System.out.println("1");
}
}
}