Skip to content

Commit f317f78

Browse files
committed
Add test for control-flow with mixed patterns, constants and fall-through
1 parent 6cf956d commit f317f78

File tree

2 files changed

+50
-22
lines changed

2 files changed

+50
-22
lines changed

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,15 @@ case Integer _, String _, A(_, _) when thing.toString().equals("abc"):
116116
yield 2;
117117
};
118118

119+
switch ((String)thing) {
120+
case "a":
121+
case String _ when ((String)thing).length() == 5:
122+
case "b":
123+
break;
124+
default:
125+
break;
126+
}
127+
119128
}
120129

121130
}

java/ql/test/library-tests/pattern-switch/cfg/test.expected

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
| Exhaustive.java:26:19:26:21 | { ... } | Exhaustive.java:8:22:8:25 | test |
4949
| Test.java:1:14:1:17 | super(...) | Test.java:1:14:1:17 | Test |
5050
| Test.java:1:14:1:17 | { ... } | Test.java:1:14:1:17 | super(...) |
51-
| Test.java:3:41:119:3 | { ... } | Test.java:5:6:5:19 | switch (...) |
51+
| Test.java:3:41:128:3 | { ... } | Test.java:5:6:5:19 | switch (...) |
5252
| Test.java:5:6:5:19 | switch (...) | Test.java:5:14:5:18 | thing |
5353
| Test.java:5:14:5:18 | thing | Test.java:6:8:6:23 | case <Pattern> |
5454
| Test.java:6:8:6:23 | case <Pattern> | Test.java:6:20:6:20 | s |
@@ -319,7 +319,7 @@
319319
| Test.java:106:8:106:15 | default | Test.java:107:10:107:15 | break |
320320
| Test.java:107:10:107:15 | break | Test.java:110:6:117:7 | var ...; |
321321
| Test.java:110:6:117:7 | var ...; | Test.java:110:19:110:31 | switch (...) |
322-
| Test.java:110:10:110:31 | result | Test.java:3:22:3:25 | test |
322+
| Test.java:110:10:110:31 | result | Test.java:119:6:119:27 | switch (...) |
323323
| Test.java:110:19:110:31 | switch (...) | Test.java:110:26:110:30 | thing |
324324
| Test.java:110:26:110:30 | thing | Test.java:111:8:111:20 | case <Pattern> |
325325
| Test.java:111:8:111:20 | case <Pattern> | Test.java:111:15:111:15 | <anonymous local variable> |
@@ -349,23 +349,42 @@
349349
| Test.java:115:8:115:15 | default | Test.java:116:10:116:17 | yield ... |
350350
| Test.java:116:10:116:17 | yield ... | Test.java:116:16:116:16 | 2 |
351351
| Test.java:116:16:116:16 | 2 | Test.java:110:10:110:31 | result |
352-
| Test.java:123:8:123:8 | ...=... | Test.java:123:8:123:8 | <Expr>; |
353-
| Test.java:123:8:123:8 | ...=... | Test.java:123:8:123:8 | A |
354-
| Test.java:123:8:123:8 | <Expr>; | Test.java:123:8:123:8 | this |
355-
| Test.java:123:8:123:8 | <Expr>; | Test.java:123:8:123:8 | this |
356-
| Test.java:123:8:123:8 | b | Test.java:123:8:123:8 | ...=... |
357-
| Test.java:123:8:123:8 | field3 | Test.java:123:8:123:8 | ...=... |
358-
| Test.java:123:8:123:8 | super(...) | Test.java:123:8:123:8 | <Expr>; |
359-
| Test.java:123:8:123:8 | this | Test.java:123:8:123:8 | b |
360-
| Test.java:123:8:123:8 | this | Test.java:123:8:123:8 | field3 |
361-
| Test.java:123:8:123:8 | { ... } | Test.java:123:8:123:8 | super(...) |
362-
| Test.java:124:8:124:8 | ...=... | Test.java:124:8:124:8 | <Expr>; |
363-
| Test.java:124:8:124:8 | ...=... | Test.java:124:8:124:8 | B |
364-
| Test.java:124:8:124:8 | <Expr>; | Test.java:124:8:124:8 | this |
365-
| Test.java:124:8:124:8 | <Expr>; | Test.java:124:8:124:8 | this |
366-
| Test.java:124:8:124:8 | field1 | Test.java:124:8:124:8 | ...=... |
367-
| Test.java:124:8:124:8 | field2 | Test.java:124:8:124:8 | ...=... |
368-
| Test.java:124:8:124:8 | super(...) | Test.java:124:8:124:8 | <Expr>; |
369-
| Test.java:124:8:124:8 | this | Test.java:124:8:124:8 | field1 |
370-
| Test.java:124:8:124:8 | this | Test.java:124:8:124:8 | field2 |
371-
| Test.java:124:8:124:8 | { ... } | Test.java:124:8:124:8 | super(...) |
352+
| Test.java:119:6:119:27 | switch (...) | Test.java:119:22:119:26 | thing |
353+
| Test.java:119:14:119:26 | (...)... | Test.java:120:8:120:16 | case ... |
354+
| Test.java:119:14:119:26 | (...)... | Test.java:121:8:121:56 | case <Pattern> |
355+
| Test.java:119:22:119:26 | thing | Test.java:119:14:119:26 | (...)... |
356+
| Test.java:120:8:120:16 | case ... | Test.java:122:8:122:16 | case ... |
357+
| Test.java:121:8:121:56 | case <Pattern> | Test.java:121:20:121:20 | <anonymous local variable> |
358+
| Test.java:121:8:121:56 | case <Pattern> | Test.java:122:8:122:16 | case ... |
359+
| Test.java:121:8:121:56 | case <Pattern> | Test.java:124:8:124:15 | default |
360+
| Test.java:121:20:121:20 | <anonymous local variable> | Test.java:121:36:121:40 | thing |
361+
| Test.java:121:27:121:50 | length(...) | Test.java:121:55:121:55 | 5 |
362+
| Test.java:121:27:121:55 | ... == ... | Test.java:122:8:122:16 | case ... |
363+
| Test.java:121:27:121:55 | ... == ... | Test.java:124:8:124:15 | default |
364+
| Test.java:121:28:121:40 | (...)... | Test.java:121:27:121:50 | length(...) |
365+
| Test.java:121:36:121:40 | thing | Test.java:121:28:121:40 | (...)... |
366+
| Test.java:121:55:121:55 | 5 | Test.java:121:27:121:55 | ... == ... |
367+
| Test.java:122:8:122:16 | case ... | Test.java:123:10:123:15 | break |
368+
| Test.java:123:10:123:15 | break | Test.java:3:22:3:25 | test |
369+
| Test.java:124:8:124:15 | default | Test.java:125:10:125:15 | break |
370+
| Test.java:125:10:125:15 | break | Test.java:3:22:3:25 | test |
371+
| Test.java:132:8:132:8 | ...=... | Test.java:132:8:132:8 | <Expr>; |
372+
| Test.java:132:8:132:8 | ...=... | Test.java:132:8:132:8 | A |
373+
| Test.java:132:8:132:8 | <Expr>; | Test.java:132:8:132:8 | this |
374+
| Test.java:132:8:132:8 | <Expr>; | Test.java:132:8:132:8 | this |
375+
| Test.java:132:8:132:8 | b | Test.java:132:8:132:8 | ...=... |
376+
| Test.java:132:8:132:8 | field3 | Test.java:132:8:132:8 | ...=... |
377+
| Test.java:132:8:132:8 | super(...) | Test.java:132:8:132:8 | <Expr>; |
378+
| Test.java:132:8:132:8 | this | Test.java:132:8:132:8 | b |
379+
| Test.java:132:8:132:8 | this | Test.java:132:8:132:8 | field3 |
380+
| Test.java:132:8:132:8 | { ... } | Test.java:132:8:132:8 | super(...) |
381+
| Test.java:133:8:133:8 | ...=... | Test.java:133:8:133:8 | <Expr>; |
382+
| Test.java:133:8:133:8 | ...=... | Test.java:133:8:133:8 | B |
383+
| Test.java:133:8:133:8 | <Expr>; | Test.java:133:8:133:8 | this |
384+
| Test.java:133:8:133:8 | <Expr>; | Test.java:133:8:133:8 | this |
385+
| Test.java:133:8:133:8 | field1 | Test.java:133:8:133:8 | ...=... |
386+
| Test.java:133:8:133:8 | field2 | Test.java:133:8:133:8 | ...=... |
387+
| Test.java:133:8:133:8 | super(...) | Test.java:133:8:133:8 | <Expr>; |
388+
| Test.java:133:8:133:8 | this | Test.java:133:8:133:8 | field1 |
389+
| Test.java:133:8:133:8 | this | Test.java:133:8:133:8 | field2 |
390+
| Test.java:133:8:133:8 | { ... } | Test.java:133:8:133:8 | super(...) |

0 commit comments

Comments
 (0)