File tree Expand file tree Collapse file tree
java/ql/test/library-tests/pattern-switch/dfg Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ public class GuardTest {
2+
3+ public static void sink (String s ) { }
4+ public static boolean isSafe (String s ) { return s .length () < 10 ; }
5+
6+ public static void test (Object o ) {
7+
8+ switch (o ) {
9+
10+ case String s :
11+ sink (s );
12+ break ;
13+ default :
14+ break ;
15+
16+ }
17+
18+ switch (o ) {
19+
20+ case String s when isSafe (s ):
21+ sink (s );
22+ break ;
23+ default :
24+ break ;
25+
26+ }
27+
28+ }
29+
30+ }
Original file line number Diff line number Diff line change 1+ public class RecordTest {
2+
3+ interface I { }
4+ record Middle (String field ) { }
5+ record A (Middle afield ) implements I { }
6+ record B (Middle bfield ) implements I { }
7+
8+ public static String sink (String s ) { return s ; }
9+
10+ public static void test (boolean inp ) {
11+
12+ I i = inp ? new A (new Middle ("A" )) : new B (new Middle ("B" ));
13+
14+ switch (i ) {
15+ case A (Middle (String field )):
16+ sink (field );
17+ break ;
18+ case B (Middle (String field )):
19+ sink (field );
20+ break ;
21+ default :
22+ break ;
23+ }
24+
25+ switch (i ) {
26+ case A (Middle (String field )) -> sink (field );
27+ case B (Middle (String field )) -> sink (field );
28+ default -> { }
29+ }
30+
31+ var x = switch (i ) {
32+ case A (Middle (String field )):
33+ yield sink (field );
34+ case B (Middle (String field )):
35+ yield sink (field );
36+ default :
37+ yield "Default case" ;
38+ };
39+
40+ var y = switch (i ) {
41+ case A (Middle (String field )) -> sink (field );
42+ case B (Middle (String field )) -> sink (field );
43+ default -> "Default case" ;
44+ };
45+
46+ }
47+
48+ }
You can’t perform that action at this time.
0 commit comments