mirror of
https://github.com/github/codeql.git
synced 2025-12-24 04:36:35 +01:00
Add test for guards in the presence of fall-through between pattern and constant cases
This commit is contained in:
@@ -82,3 +82,23 @@ Test.java:
|
||||
# 24| 0: [StringLiteral] "g"
|
||||
# 25| 3: [DefaultCase] default
|
||||
# 25| -1: [BlockStmt] { ... }
|
||||
# 27| 5: [SwitchStmt] switch (...)
|
||||
# 27| -1: [VarAccess] s
|
||||
# 28| 0: [ConstCase] case ...
|
||||
# 28| 0: [StringLiteral] "h"
|
||||
# 29| 1: [PatternCase] case <Pattern>
|
||||
# 29| -3: [EQExpr] ... == ...
|
||||
# 29| 0: [VarAccess] len
|
||||
# 29| 1: [IntegerLiteral] 4
|
||||
#-----| 0: (Pattern case declaration)
|
||||
# 29| 0: [TypeAccess] String
|
||||
# 29| 1: [LocalVariableDeclExpr] <anonymous local variable>
|
||||
# 30| 2: [ConstCase] case ...
|
||||
# 30| 0: [StringLiteral] "i"
|
||||
# 31| 3: [LocalVariableDeclStmt] var ...;
|
||||
# 31| 0: [TypeAccess] String
|
||||
# 31| 1: [LocalVariableDeclExpr] target
|
||||
# 31| 0: [StringLiteral] "Shouldn't be controlled by any of those tests"
|
||||
# 32| 4: [BreakStmt] break
|
||||
# 33| 5: [DefaultCase] default
|
||||
# 34| 6: [BreakStmt] break
|
||||
|
||||
@@ -24,5 +24,14 @@ class Test {
|
||||
case "g" -> { }
|
||||
default -> { }
|
||||
}
|
||||
switch (s) {
|
||||
case "h":
|
||||
case String _ when len == 4:
|
||||
case "i":
|
||||
String target = "Shouldn't be controlled by any of those tests";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
hasBranchEdge
|
||||
| Test.java:4:7:4:22 | case ... | Test.java:2:39:27:3 | { ... } | Test.java:4:7:4:22 | case ... | true |
|
||||
| Test.java:5:7:5:17 | case ... | Test.java:2:39:27:3 | { ... } | Test.java:5:7:5:17 | case ... | true |
|
||||
| Test.java:6:7:6:17 | case ... | Test.java:2:39:27:3 | { ... } | Test.java:6:7:6:17 | case ... | true |
|
||||
| Test.java:7:7:7:16 | default | Test.java:2:39:27:3 | { ... } | Test.java:7:7:7:16 | default | true |
|
||||
| Test.java:4:7:4:22 | case ... | Test.java:2:39:36:3 | { ... } | Test.java:4:7:4:22 | case ... | true |
|
||||
| Test.java:5:7:5:17 | case ... | Test.java:2:39:36:3 | { ... } | Test.java:5:7:5:17 | case ... | true |
|
||||
| Test.java:6:7:6:17 | case ... | Test.java:2:39:36:3 | { ... } | Test.java:6:7:6:17 | case ... | true |
|
||||
| Test.java:7:7:7:16 | default | Test.java:2:39:36:3 | { ... } | Test.java:7:7:7:16 | default | true |
|
||||
| Test.java:10:7:10:22 | case ... | Test.java:3:9:3:21 | x | Test.java:10:7:10:22 | case ... | true |
|
||||
| Test.java:11:7:11:17 | case ... | Test.java:3:9:3:21 | x | Test.java:11:7:11:17 | case ... | true |
|
||||
| Test.java:12:7:12:17 | case ... | Test.java:3:9:3:21 | x | Test.java:12:7:12:17 | case ... | true |
|
||||
@@ -31,6 +31,16 @@ hasBranchEdge
|
||||
| Test.java:24:7:24:17 | case ... | Test.java:23:19:23:20 | s2 | Test.java:24:7:24:17 | case ... | true |
|
||||
| Test.java:25:7:25:16 | default | Test.java:23:7:23:37 | case <Pattern> | Test.java:25:7:25:16 | default | true |
|
||||
| Test.java:25:7:25:16 | default | Test.java:23:19:23:20 | s2 | Test.java:25:7:25:16 | default | true |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:5:27:14 | switch (...) | Test.java:28:7:28:15 | case ... | true |
|
||||
| Test.java:29:7:29:34 | case <Pattern> | Test.java:29:7:29:34 | case <Pattern> | Test.java:29:19:29:19 | <anonymous local variable> | true |
|
||||
| Test.java:29:7:29:34 | case <Pattern> | Test.java:29:7:29:34 | case <Pattern> | Test.java:30:7:30:15 | case ... | false |
|
||||
| Test.java:29:7:29:34 | case <Pattern> | Test.java:29:7:29:34 | case <Pattern> | Test.java:33:7:33:14 | default | false |
|
||||
| Test.java:29:26:29:33 | ... == ... | Test.java:29:19:29:19 | <anonymous local variable> | Test.java:30:7:30:15 | case ... | false |
|
||||
| Test.java:29:26:29:33 | ... == ... | Test.java:29:19:29:19 | <anonymous local variable> | Test.java:30:7:30:15 | case ... | true |
|
||||
| Test.java:29:26:29:33 | ... == ... | Test.java:29:19:29:19 | <anonymous local variable> | Test.java:33:7:33:14 | default | false |
|
||||
| Test.java:30:7:30:15 | case ... | Test.java:29:7:29:34 | case <Pattern> | Test.java:30:7:30:15 | case ... | true |
|
||||
| Test.java:33:7:33:14 | default | Test.java:29:7:29:34 | case <Pattern> | Test.java:33:7:33:14 | default | true |
|
||||
| Test.java:33:7:33:14 | default | Test.java:29:19:29:19 | <anonymous local variable> | Test.java:33:7:33:14 | default | true |
|
||||
#select
|
||||
| Test.java:5:7:5:17 | case ... | Test.java:3:20:3:20 | s | Test.java:5:12:5:14 | "c" | true | false | Test.java:7:7:7:16 | default |
|
||||
| Test.java:5:7:5:17 | case ... | Test.java:3:20:3:20 | s | Test.java:5:12:5:14 | "c" | true | true | Test.java:5:7:5:17 | case ... |
|
||||
@@ -48,3 +58,6 @@ hasBranchEdge
|
||||
| Test.java:23:27:23:34 | ... == ... | Test.java:23:27:23:29 | len | Test.java:23:34:23:34 | 4 | true | true | Test.java:23:39:23:41 | { ... } |
|
||||
| Test.java:24:7:24:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:24:12:24:14 | "g" | true | false | Test.java:25:7:25:16 | default |
|
||||
| Test.java:24:7:24:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:24:12:24:14 | "g" | true | true | Test.java:24:7:24:17 | case ... |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | false | Test.java:33:7:33:14 | default |
|
||||
| Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | true | Test.java:28:7:28:15 | case ... |
|
||||
| Test.java:30:7:30:15 | case ... | Test.java:27:13:27:13 | s | Test.java:30:12:30:14 | "i" | true | false | Test.java:33:7:33:14 | default |
|
||||
|
||||
Reference in New Issue
Block a user