mirror of
https://github.com/github/codeql.git
synced 2026-04-22 07:15:15 +02:00
Add CFG test for anonymous variables and fall-throughs with pattern cases
This commit is contained in:
@@ -98,6 +98,24 @@ public class Test {
|
||||
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;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
//semmle-extractor-options: --javac-args --release 21
|
||||
//semmle-extractor-options: --javac-args --release 22
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
| Exhaustive.java:26:19:26:21 | { ... } | Exhaustive.java:8:22:8:25 | test |
|
||||
| Test.java:1:14:1:17 | super(...) | Test.java:1:14:1:17 | Test |
|
||||
| Test.java:1:14:1:17 | { ... } | Test.java:1:14:1:17 | super(...) |
|
||||
| Test.java:3:41:101:3 | { ... } | Test.java:5:6:5:19 | switch (...) |
|
||||
| Test.java:3:41:119:3 | { ... } | Test.java:5:6:5:19 | switch (...) |
|
||||
| Test.java:5:6:5:19 | switch (...) | Test.java:5:14:5:18 | thing |
|
||||
| Test.java:5:14:5:18 | thing | Test.java:6:8:6:23 | case <Pattern> |
|
||||
| Test.java:6:8:6:23 | case <Pattern> | Test.java:6:20:6:20 | s |
|
||||
@@ -288,26 +288,84 @@
|
||||
| Test.java:95:21:95:21 | x | Test.java:95:28:95:28 | y |
|
||||
| Test.java:95:28:95:28 | y | Test.java:95:15:95:29 | B(...) |
|
||||
| Test.java:95:36:95:36 | z | Test.java:95:13:95:37 | A(...) |
|
||||
| Test.java:96:10:96:15 | break | Test.java:3:22:3:25 | test |
|
||||
| Test.java:96:10:96:15 | break | Test.java:101:6:101:18 | switch (...) |
|
||||
| Test.java:97:8:97:15 | default | Test.java:98:10:98:15 | break |
|
||||
| Test.java:98:10:98:15 | break | Test.java:3:22:3:25 | test |
|
||||
| Test.java:105:8:105:8 | ...=... | Test.java:105:8:105:8 | <Expr>; |
|
||||
| Test.java:105:8:105:8 | ...=... | Test.java:105:8:105:8 | A |
|
||||
| Test.java:105:8:105:8 | <Expr>; | Test.java:105:8:105:8 | this |
|
||||
| Test.java:105:8:105:8 | <Expr>; | Test.java:105:8:105:8 | this |
|
||||
| Test.java:105:8:105:8 | b | Test.java:105:8:105:8 | ...=... |
|
||||
| Test.java:105:8:105:8 | field3 | Test.java:105:8:105:8 | ...=... |
|
||||
| Test.java:105:8:105:8 | super(...) | Test.java:105:8:105:8 | <Expr>; |
|
||||
| Test.java:105:8:105:8 | this | Test.java:105:8:105:8 | b |
|
||||
| Test.java:105:8:105:8 | this | Test.java:105:8:105:8 | field3 |
|
||||
| Test.java:105:8:105:8 | { ... } | Test.java:105:8:105:8 | super(...) |
|
||||
| Test.java:106:8:106:8 | ...=... | Test.java:106:8:106:8 | <Expr>; |
|
||||
| Test.java:106:8:106:8 | ...=... | Test.java:106:8:106:8 | B |
|
||||
| Test.java:106:8:106:8 | <Expr>; | Test.java:106:8:106:8 | this |
|
||||
| Test.java:106:8:106:8 | <Expr>; | Test.java:106:8:106:8 | this |
|
||||
| Test.java:106:8:106:8 | field1 | Test.java:106:8:106:8 | ...=... |
|
||||
| Test.java:106:8:106:8 | field2 | Test.java:106:8:106:8 | ...=... |
|
||||
| Test.java:106:8:106:8 | super(...) | Test.java:106:8:106:8 | <Expr>; |
|
||||
| Test.java:106:8:106:8 | this | Test.java:106:8:106:8 | field1 |
|
||||
| Test.java:106:8:106:8 | this | Test.java:106:8:106:8 | field2 |
|
||||
| Test.java:106:8:106:8 | { ... } | Test.java:106:8:106:8 | super(...) |
|
||||
| Test.java:98:10:98:15 | break | Test.java:101:6:101:18 | switch (...) |
|
||||
| Test.java:101:6:101:18 | switch (...) | Test.java:101:13:101:17 | thing |
|
||||
| Test.java:101:13:101:17 | thing | Test.java:102:8:102:20 | case <Pattern> |
|
||||
| Test.java:102:8:102:20 | case <Pattern> | Test.java:102:15:102:15 | <anonymous local variable> |
|
||||
| Test.java:102:8:102:20 | case <Pattern> | Test.java:103:8:103:77 | case <Pattern> |
|
||||
| Test.java:102:13:102:19 | B(...) | Test.java:105:10:105:15 | break |
|
||||
| Test.java:102:15:102:15 | <anonymous local variable> | Test.java:102:18:102:18 | <anonymous local variable> |
|
||||
| Test.java:102:18:102:18 | <anonymous local variable> | Test.java:102:13:102:19 | B(...) |
|
||||
| Test.java:103:8:103:77 | case <Pattern> | Test.java:103:21:103:21 | <anonymous local variable> |
|
||||
| Test.java:103:8:103:77 | case <Pattern> | Test.java:103:31:103:31 | <anonymous local variable> |
|
||||
| Test.java:103:8:103:77 | case <Pattern> | Test.java:103:36:103:36 | <anonymous local variable> |
|
||||
| Test.java:103:8:103:77 | case <Pattern> | Test.java:104:8:104:20 | case <Pattern> |
|
||||
| Test.java:103:21:103:21 | <anonymous local variable> | Test.java:103:47:103:51 | thing |
|
||||
| Test.java:103:31:103:31 | <anonymous local variable> | Test.java:103:47:103:51 | thing |
|
||||
| Test.java:103:34:103:40 | A(...) | Test.java:103:47:103:51 | thing |
|
||||
| Test.java:103:36:103:36 | <anonymous local variable> | Test.java:103:39:103:39 | <anonymous local variable> |
|
||||
| Test.java:103:39:103:39 | <anonymous local variable> | Test.java:103:34:103:40 | A(...) |
|
||||
| Test.java:103:47:103:51 | thing | Test.java:103:47:103:62 | toString(...) |
|
||||
| Test.java:103:47:103:62 | toString(...) | Test.java:103:71:103:75 | "abc" |
|
||||
| Test.java:103:47:103:76 | equals(...) | Test.java:104:8:104:20 | case <Pattern> |
|
||||
| Test.java:103:47:103:76 | equals(...) | Test.java:105:10:105:15 | break |
|
||||
| Test.java:103:71:103:75 | "abc" | Test.java:103:47:103:76 | equals(...) |
|
||||
| Test.java:104:8:104:20 | case <Pattern> | Test.java:104:19:104:19 | <anonymous local variable> |
|
||||
| Test.java:104:8:104:20 | case <Pattern> | Test.java:106:8:106:15 | default |
|
||||
| Test.java:104:19:104:19 | <anonymous local variable> | Test.java:105:10:105:15 | break |
|
||||
| Test.java:105:10:105:15 | break | Test.java:110:6:117:7 | var ...; |
|
||||
| Test.java:106:8:106:15 | default | Test.java:107:10:107:15 | break |
|
||||
| Test.java:107:10:107:15 | break | Test.java:110:6:117:7 | var ...; |
|
||||
| Test.java:110:6:117:7 | var ...; | Test.java:110:19:110:31 | switch (...) |
|
||||
| Test.java:110:10:110:31 | result | Test.java:3:22:3:25 | test |
|
||||
| Test.java:110:19:110:31 | switch (...) | Test.java:110:26:110:30 | thing |
|
||||
| Test.java:110:26:110:30 | thing | Test.java:111:8:111:20 | case <Pattern> |
|
||||
| Test.java:111:8:111:20 | case <Pattern> | Test.java:111:15:111:15 | <anonymous local variable> |
|
||||
| Test.java:111:8:111:20 | case <Pattern> | Test.java:112:8:112:77 | case <Pattern> |
|
||||
| Test.java:111:13:111:19 | B(...) | Test.java:114:10:114:17 | yield ... |
|
||||
| Test.java:111:15:111:15 | <anonymous local variable> | Test.java:111:18:111:18 | <anonymous local variable> |
|
||||
| Test.java:111:18:111:18 | <anonymous local variable> | Test.java:111:13:111:19 | B(...) |
|
||||
| Test.java:112:8:112:77 | case <Pattern> | Test.java:112:21:112:21 | <anonymous local variable> |
|
||||
| Test.java:112:8:112:77 | case <Pattern> | Test.java:112:31:112:31 | <anonymous local variable> |
|
||||
| Test.java:112:8:112:77 | case <Pattern> | Test.java:112:36:112:36 | <anonymous local variable> |
|
||||
| Test.java:112:8:112:77 | case <Pattern> | Test.java:113:8:113:20 | case <Pattern> |
|
||||
| Test.java:112:21:112:21 | <anonymous local variable> | Test.java:112:47:112:51 | thing |
|
||||
| Test.java:112:31:112:31 | <anonymous local variable> | Test.java:112:47:112:51 | thing |
|
||||
| Test.java:112:34:112:40 | A(...) | Test.java:112:47:112:51 | thing |
|
||||
| Test.java:112:36:112:36 | <anonymous local variable> | Test.java:112:39:112:39 | <anonymous local variable> |
|
||||
| Test.java:112:39:112:39 | <anonymous local variable> | Test.java:112:34:112:40 | A(...) |
|
||||
| Test.java:112:47:112:51 | thing | Test.java:112:47:112:62 | toString(...) |
|
||||
| Test.java:112:47:112:62 | toString(...) | Test.java:112:71:112:75 | "abc" |
|
||||
| Test.java:112:47:112:76 | equals(...) | Test.java:113:8:113:20 | case <Pattern> |
|
||||
| Test.java:112:47:112:76 | equals(...) | Test.java:114:10:114:17 | yield ... |
|
||||
| Test.java:112:71:112:75 | "abc" | Test.java:112:47:112:76 | equals(...) |
|
||||
| Test.java:113:8:113:20 | case <Pattern> | Test.java:113:19:113:19 | <anonymous local variable> |
|
||||
| Test.java:113:8:113:20 | case <Pattern> | Test.java:115:8:115:15 | default |
|
||||
| Test.java:113:19:113:19 | <anonymous local variable> | Test.java:114:10:114:17 | yield ... |
|
||||
| Test.java:114:10:114:17 | yield ... | Test.java:114:16:114:16 | 1 |
|
||||
| Test.java:114:16:114:16 | 1 | Test.java:110:10:110:31 | result |
|
||||
| Test.java:115:8:115:15 | default | Test.java:116:10:116:17 | yield ... |
|
||||
| Test.java:116:10:116:17 | yield ... | Test.java:116:16:116:16 | 2 |
|
||||
| Test.java:116:16:116:16 | 2 | Test.java:110:10:110:31 | result |
|
||||
| Test.java:123:8:123:8 | ...=... | Test.java:123:8:123:8 | <Expr>; |
|
||||
| Test.java:123:8:123:8 | ...=... | Test.java:123:8:123:8 | A |
|
||||
| Test.java:123:8:123:8 | <Expr>; | Test.java:123:8:123:8 | this |
|
||||
| Test.java:123:8:123:8 | <Expr>; | Test.java:123:8:123:8 | this |
|
||||
| Test.java:123:8:123:8 | b | Test.java:123:8:123:8 | ...=... |
|
||||
| Test.java:123:8:123:8 | field3 | Test.java:123:8:123:8 | ...=... |
|
||||
| Test.java:123:8:123:8 | super(...) | Test.java:123:8:123:8 | <Expr>; |
|
||||
| Test.java:123:8:123:8 | this | Test.java:123:8:123:8 | b |
|
||||
| Test.java:123:8:123:8 | this | Test.java:123:8:123:8 | field3 |
|
||||
| Test.java:123:8:123:8 | { ... } | Test.java:123:8:123:8 | super(...) |
|
||||
| Test.java:124:8:124:8 | ...=... | Test.java:124:8:124:8 | <Expr>; |
|
||||
| Test.java:124:8:124:8 | ...=... | Test.java:124:8:124:8 | B |
|
||||
| Test.java:124:8:124:8 | <Expr>; | Test.java:124:8:124:8 | this |
|
||||
| Test.java:124:8:124:8 | <Expr>; | Test.java:124:8:124:8 | this |
|
||||
| Test.java:124:8:124:8 | field1 | Test.java:124:8:124:8 | ...=... |
|
||||
| Test.java:124:8:124:8 | field2 | Test.java:124:8:124:8 | ...=... |
|
||||
| Test.java:124:8:124:8 | super(...) | Test.java:124:8:124:8 | <Expr>; |
|
||||
| Test.java:124:8:124:8 | this | Test.java:124:8:124:8 | field1 |
|
||||
| Test.java:124:8:124:8 | this | Test.java:124:8:124:8 | field2 |
|
||||
| Test.java:124:8:124:8 | { ... } | Test.java:124:8:124:8 | super(...) |
|
||||
|
||||
Reference in New Issue
Block a user