Files
codeql/java/ql/test/library-tests/pattern-switch/cfg/Test.java

140 lines
3.2 KiB
Java

public class Test {
public static void test(Object thing) {
switch (thing) {
case String s -> System.out.println(s);
case Integer i -> System.out.println("An integer: " + i);
default -> { }
}
switch (thing) {
case String s:
System.out.println(s);
break;
case Integer i:
System.out.println("An integer:" + i);
break;
default:
break;
}
var thingAsString = switch(thing) {
case String s -> s;
case Integer i -> "An integer: " + i;
default -> "Something else";
};
var thingAsString2 = switch(thing) {
case String s:
yield s;
case Integer i:
yield "An integer: " + i;
default:
yield "Something else";
};
switch(thing) {
case String s when s.length() == 3:
System.out.println("Length 3");
break;
case String s when s.length() == 5:
System.out.println("Length 5");
break;
default:
System.out.println("Anything else");
break;
}
switch(thing) {
case String s when s.length() == 3 -> System.out.println("Length 3");
case String s when s.length() == 5 -> System.out.println("Length 5");
default -> { }
}
switch((String)thing) {
case "Const1":
System.out.println("It's Const1!");
case "Const2":
System.out.println("It's Const1 or Const2!");
break;
case String s when s.length() <= 6:
System.out.println("It's <= 6 chars long, and neither Const1 nor Const2");
case "Const3":
System.out.println("It's (<= 6 chars long, and neither Const1 nor Const2), or Const3");
break;
case "Const30":
System.out.println("It's Const30");
break;
case null, default:
System.out.println("It's null, or something else");
}
switch(thing) {
case String s:
System.out.println(s);
break;
case null:
System.out.println("It's null");
break;
case Integer i:
System.out.println("An integer:" + i);
break;
default:
break;
}
switch(thing) {
case A(B(int x, String y), float z):
break;
default:
break;
}
switch(thing) {
case A(B(var x, var y), var z):
break;
default:
break;
}
switch(thing) {
case B(_, _):
case Integer _, String _, A(_, _) when thing.toString().equals("abc"):
case Float _:
break;
default:
break;
}
var result = switch(thing) {
case B(_, _):
case Integer _, String _, A(_, _) when thing.toString().equals("abc"):
case Float _:
yield 1;
default:
yield 2;
};
switch ((String)thing) {
case "a":
case String _ when ((String)thing).length() == 5:
case "b":
break;
default:
break;
}
// Test the case where a case falls out of a switch block without a break:
switch(thing) {
case String _:
default:
}
}
}
record A(B b, float field3) { }
record B(int field1, String field2) { }