mirror of
https://github.com/github/codeql.git
synced 2026-04-29 10:45:15 +02:00
Add test case for CFG issue with && in if condition
This commit is contained in:
@@ -6,7 +6,7 @@ public class Test {
|
||||
var y: Long = 50
|
||||
var z: Int = 0
|
||||
var w: Int = 0
|
||||
|
||||
|
||||
// if-else, multiple statements in block
|
||||
if (x > 0) {
|
||||
y = 20
|
||||
@@ -14,34 +14,34 @@ public class Test {
|
||||
} else {
|
||||
y = 30
|
||||
}
|
||||
|
||||
|
||||
z = 0
|
||||
|
||||
|
||||
// if-else with return in one branch
|
||||
if(x < 0)
|
||||
y = 40
|
||||
else
|
||||
else
|
||||
return
|
||||
|
||||
|
||||
// this is not the start of a BB due to the return
|
||||
z = 10
|
||||
|
||||
|
||||
// single-branch if-else
|
||||
if (x == 0) {
|
||||
y = 60
|
||||
z = 10
|
||||
}
|
||||
|
||||
|
||||
z = 20
|
||||
|
||||
|
||||
// while loop
|
||||
while(x > 0) {
|
||||
y = 10
|
||||
x--
|
||||
}
|
||||
|
||||
|
||||
z = 30
|
||||
|
||||
|
||||
/*
|
||||
TODO
|
||||
// for loop
|
||||
@@ -49,9 +49,9 @@ TODO
|
||||
y = 0
|
||||
w = 10
|
||||
}
|
||||
|
||||
|
||||
z = 40
|
||||
|
||||
|
||||
// nested control flow
|
||||
for(j in 0 .. 9) {
|
||||
y = 30
|
||||
@@ -69,11 +69,11 @@ TODO
|
||||
x = 0
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
z = 50
|
||||
|
||||
|
||||
// nested control-flow
|
||||
|
||||
|
||||
w = 40
|
||||
return
|
||||
}
|
||||
@@ -96,3 +96,15 @@ fun t2(o: Any?): Int {
|
||||
return 2
|
||||
}
|
||||
}
|
||||
|
||||
fun fn(x:Any?, y: Any?) {
|
||||
if (x == null && y == null) {
|
||||
throw Exception()
|
||||
}
|
||||
|
||||
if (x != null) {
|
||||
println("x not null")
|
||||
} else if (y != null) {
|
||||
println("y not null")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,3 +132,42 @@
|
||||
| Test.kt:95:4:97:2 | catch (...) | 2 | Test.kt:95:36:97:2 | { ... } |
|
||||
| Test.kt:95:4:97:2 | catch (...) | 3 | Test.kt:96:10:96:10 | 2 |
|
||||
| Test.kt:95:4:97:2 | catch (...) | 4 | Test.kt:96:3:96:10 | return ... |
|
||||
| Test.kt:100:1:110:1 | fn | 0 | Test.kt:100:1:110:1 | fn |
|
||||
| Test.kt:100:25:110:1 | { ... } | 0 | Test.kt:100:25:110:1 | { ... } |
|
||||
| Test.kt:100:25:110:1 | { ... } | 1 | Test.kt:101:5:103:5 | <Expr>; |
|
||||
| Test.kt:100:25:110:1 | { ... } | 2 | Test.kt:101:5:103:5 | when ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | 3 | Test.kt:101:5:103:5 | ... -> ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | 4 | Test.kt:101:9:101:30 | when ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | 5 | Test.kt:101:9:101:30 | ... -> ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | 6 | Test.kt:101:9:101:9 | x |
|
||||
| Test.kt:100:25:110:1 | { ... } | 7 | Test.kt:101:14:101:17 | null |
|
||||
| Test.kt:100:25:110:1 | { ... } | 8 | Test.kt:101:9:101:17 | ... (value equals) ... |
|
||||
| Test.kt:101:22:101:30 | ... -> ... | 0 | Test.kt:101:22:101:30 | ... -> ... |
|
||||
| Test.kt:101:22:101:30 | ... -> ... | 1 | Test.kt:101:22:101:30 | true |
|
||||
| Test.kt:101:22:101:30 | ... -> ... | 2 | Test.kt:101:22:101:30 | <Expr>; |
|
||||
| Test.kt:101:22:101:30 | ... -> ... | 3 | Test.kt:101:22:101:30 | false |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | 0 | Test.kt:101:22:101:30 | <Expr>; |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | 1 | Test.kt:101:22:101:22 | y |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | 2 | Test.kt:101:27:101:30 | null |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | 3 | Test.kt:101:22:101:30 | ... (value equals) ... |
|
||||
| Test.kt:101:33:103:5 | { ... } | 0 | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:101:33:103:5 | { ... } | 1 | Test.kt:102:15:102:25 | new Exception(...) |
|
||||
| Test.kt:101:33:103:5 | { ... } | 2 | Test.kt:102:9:102:25 | throw ... |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 0 | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 1 | Test.kt:105:5:109:5 | when ... |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 2 | Test.kt:105:9:107:5 | ... -> ... |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 3 | Test.kt:105:9:105:9 | x |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 4 | Test.kt:105:14:105:17 | null |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | 5 | Test.kt:105:9:105:17 | ... (value not-equals) ... |
|
||||
| Test.kt:105:20:107:5 | { ... } | 0 | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:105:20:107:5 | { ... } | 1 | Test.kt:106:9:106:29 | <Expr>; |
|
||||
| Test.kt:105:20:107:5 | { ... } | 2 | Test.kt:106:18:106:27 | x not null |
|
||||
| Test.kt:105:20:107:5 | { ... } | 3 | Test.kt:106:9:106:29 | println(...) |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | 0 | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | 1 | Test.kt:107:16:107:16 | y |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | 2 | Test.kt:107:21:107:24 | null |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | 3 | Test.kt:107:16:107:24 | ... (value not-equals) ... |
|
||||
| Test.kt:107:27:109:5 | { ... } | 0 | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:107:27:109:5 | { ... } | 1 | Test.kt:108:9:108:29 | <Expr>; |
|
||||
| Test.kt:107:27:109:5 | { ... } | 2 | Test.kt:108:18:108:27 | y not null |
|
||||
| Test.kt:107:27:109:5 | { ... } | 3 | Test.kt:108:9:108:29 | println(...) |
|
||||
|
||||
@@ -33,3 +33,21 @@
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:91:1:98:1 | t2 |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:93:3:93:13 | x |
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:95:4:97:2 | catch (...) |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:100:1:110:1 | fn |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:22:101:30 | ... -> ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:22:101:30 | <Expr>; |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:100:1:110:1 | fn |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | Test.kt:107:27:109:5 | { ... } |
|
||||
|
||||
@@ -21,3 +21,14 @@
|
||||
| Test.kt:91:22:98:1 | { ... } | Test.kt:95:4:97:2 | catch (...) |
|
||||
| Test.kt:93:3:93:13 | x | Test.kt:91:1:98:1 | t2 |
|
||||
| Test.kt:95:4:97:2 | catch (...) | Test.kt:91:1:98:1 | t2 |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:22:101:30 | ... -> ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:22:101:30 | <Expr>; |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:33:103:5 | { ... } | Test.kt:100:1:110:1 | fn |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:105:20:107:5 | { ... } | Test.kt:100:1:110:1 | fn |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | Test.kt:100:1:110:1 | fn |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:107:27:109:5 | { ... } | Test.kt:100:1:110:1 | fn |
|
||||
|
||||
@@ -169,3 +169,51 @@
|
||||
| Test.kt:95:36:97:2 | { ... } | BlockStmt | Test.kt:96:10:96:10 | 2 | IntegerLiteral |
|
||||
| Test.kt:96:3:96:10 | return ... | ReturnStmt | Test.kt:91:1:98:1 | t2 | Method |
|
||||
| Test.kt:96:10:96:10 | 2 | IntegerLiteral | Test.kt:96:3:96:10 | return ... | ReturnStmt |
|
||||
| Test.kt:100:1:110:1 | fn | Method | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:100:8:100:13 | x | Parameter | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:100:16:100:22 | y | Parameter | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:100:25:110:1 | { ... } | BlockStmt | Test.kt:101:5:103:5 | <Expr>; | ExprStmt |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | WhenBranch | Test.kt:101:9:101:30 | when ... | WhenExpr |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | ExprStmt | Test.kt:101:5:103:5 | when ... | WhenExpr |
|
||||
| Test.kt:101:5:103:5 | when ... | WhenExpr | Test.kt:101:5:103:5 | ... -> ... | WhenBranch |
|
||||
| Test.kt:101:9:101:9 | x | VarAccess | Test.kt:101:14:101:17 | null | NullLiteral |
|
||||
| Test.kt:101:9:101:17 | ... (value equals) ... | ValueEQExpr | Test.kt:101:22:101:30 | ... -> ... | WhenBranch |
|
||||
| Test.kt:101:9:101:17 | ... (value equals) ... | ValueEQExpr | Test.kt:101:22:101:30 | <Expr>; | ExprStmt |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | WhenBranch | Test.kt:101:9:101:9 | x | VarAccess |
|
||||
| Test.kt:101:9:101:30 | when ... | WhenExpr | Test.kt:101:9:101:30 | ... -> ... | WhenBranch |
|
||||
| Test.kt:101:14:101:17 | null | NullLiteral | Test.kt:101:9:101:17 | ... (value equals) ... | ValueEQExpr |
|
||||
| Test.kt:101:22:101:22 | y | VarAccess | Test.kt:101:27:101:30 | null | NullLiteral |
|
||||
| Test.kt:101:22:101:30 | ... (value equals) ... | ValueEQExpr | Test.kt:101:33:103:5 | { ... } | BlockStmt |
|
||||
| Test.kt:101:22:101:30 | ... (value equals) ... | ValueEQExpr | Test.kt:105:5:109:5 | <Expr>; | ExprStmt |
|
||||
| Test.kt:101:22:101:30 | ... -> ... | WhenBranch | Test.kt:101:22:101:30 | true | BooleanLiteral |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | ExprStmt | Test.kt:101:22:101:22 | y | VarAccess |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | ExprStmt | Test.kt:101:22:101:30 | false | BooleanLiteral |
|
||||
| Test.kt:101:22:101:30 | false | BooleanLiteral | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:101:22:101:30 | true | BooleanLiteral | Test.kt:101:22:101:30 | <Expr>; | ExprStmt |
|
||||
| Test.kt:101:27:101:30 | null | NullLiteral | Test.kt:101:22:101:30 | ... (value equals) ... | ValueEQExpr |
|
||||
| Test.kt:101:33:103:5 | { ... } | BlockStmt | Test.kt:102:15:102:25 | new Exception(...) | ClassInstanceExpr |
|
||||
| Test.kt:102:9:102:25 | throw ... | ThrowStmt | Test.kt:100:1:110:1 | fn | Method |
|
||||
| Test.kt:102:15:102:25 | Exception | TypeAccess | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:102:15:102:25 | new Exception(...) | ClassInstanceExpr | Test.kt:102:9:102:25 | throw ... | ThrowStmt |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | ExprStmt | Test.kt:105:5:109:5 | when ... | WhenExpr |
|
||||
| Test.kt:105:5:109:5 | when ... | WhenExpr | Test.kt:105:9:107:5 | ... -> ... | WhenBranch |
|
||||
| Test.kt:105:9:105:9 | x | VarAccess | Test.kt:105:14:105:17 | null | NullLiteral |
|
||||
| Test.kt:105:9:105:17 | ... (value not-equals) ... | ValueNEExpr | Test.kt:105:20:107:5 | { ... } | BlockStmt |
|
||||
| Test.kt:105:9:105:17 | ... (value not-equals) ... | ValueNEExpr | Test.kt:107:16:109:5 | ... -> ... | WhenBranch |
|
||||
| Test.kt:105:9:107:5 | ... -> ... | WhenBranch | Test.kt:105:9:105:9 | x | VarAccess |
|
||||
| Test.kt:105:14:105:17 | null | NullLiteral | Test.kt:105:9:105:17 | ... (value not-equals) ... | ValueNEExpr |
|
||||
| Test.kt:105:20:107:5 | { ... } | BlockStmt | Test.kt:106:9:106:29 | <Expr>; | ExprStmt |
|
||||
| Test.kt:106:9:106:29 | <Expr>; | ExprStmt | Test.kt:106:18:106:27 | x not null | StringLiteral |
|
||||
| Test.kt:106:9:106:29 | ConsoleKt | TypeAccess | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:106:9:106:29 | println(...) | MethodAccess | Test.kt:100:1:110:1 | fn | Method |
|
||||
| Test.kt:106:18:106:27 | x not null | StringLiteral | Test.kt:106:9:106:29 | println(...) | MethodAccess |
|
||||
| Test.kt:107:16:107:16 | y | VarAccess | Test.kt:107:21:107:24 | null | NullLiteral |
|
||||
| Test.kt:107:16:107:24 | ... (value not-equals) ... | ValueNEExpr | Test.kt:100:1:110:1 | fn | Method |
|
||||
| Test.kt:107:16:107:24 | ... (value not-equals) ... | ValueNEExpr | Test.kt:107:27:109:5 | { ... } | BlockStmt |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | WhenBranch | Test.kt:107:16:107:16 | y | VarAccess |
|
||||
| Test.kt:107:21:107:24 | null | NullLiteral | Test.kt:107:16:107:24 | ... (value not-equals) ... | ValueNEExpr |
|
||||
| Test.kt:107:27:109:5 | { ... } | BlockStmt | Test.kt:108:9:108:29 | <Expr>; | ExprStmt |
|
||||
| Test.kt:108:9:108:29 | <Expr>; | ExprStmt | Test.kt:108:18:108:27 | y not null | StringLiteral |
|
||||
| Test.kt:108:9:108:29 | ConsoleKt | TypeAccess | file://:0:0:0:0 | <none> | <none> |
|
||||
| Test.kt:108:9:108:29 | println(...) | MethodAccess | Test.kt:100:1:110:1 | fn | Method |
|
||||
| Test.kt:108:18:108:27 | y not null | StringLiteral | Test.kt:108:9:108:29 | println(...) | MethodAccess |
|
||||
|
||||
@@ -488,3 +488,83 @@
|
||||
| Test.kt:95:4:97:2 | catch (...) | Test.kt:95:36:97:2 | { ... } |
|
||||
| Test.kt:95:4:97:2 | catch (...) | Test.kt:96:3:96:10 | return ... |
|
||||
| Test.kt:95:36:97:2 | { ... } | Test.kt:96:3:96:10 | return ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:5:103:5 | ... -> ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:5:103:5 | <Expr>; |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:9:101:30 | ... -> ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:22:101:30 | ... -> ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:22:101:30 | <Expr>; |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:22:101:30 | <Expr>; |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:102:9:102:25 | throw ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:105:9:107:5 | ... -> ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:106:9:106:29 | <Expr>; |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:100:25:110:1 | { ... } | Test.kt:108:9:108:29 | <Expr>; |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:101:9:101:30 | ... -> ... |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:101:22:101:30 | ... -> ... |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:101:22:101:30 | <Expr>; |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:101:22:101:30 | <Expr>; |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:102:9:102:25 | throw ... |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:105:9:107:5 | ... -> ... |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:106:9:106:29 | <Expr>; |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:108:9:108:29 | <Expr>; |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:101:5:103:5 | ... -> ... |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:101:9:101:30 | ... -> ... |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:101:22:101:30 | ... -> ... |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:101:22:101:30 | <Expr>; |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:101:22:101:30 | <Expr>; |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:102:9:102:25 | throw ... |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:105:9:107:5 | ... -> ... |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:106:9:106:29 | <Expr>; |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:108:9:108:29 | <Expr>; |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:101:22:101:30 | ... -> ... |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:101:22:101:30 | <Expr>; |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:101:22:101:30 | <Expr>; |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:102:9:102:25 | throw ... |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:105:9:107:5 | ... -> ... |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:106:9:106:29 | <Expr>; |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:108:9:108:29 | <Expr>; |
|
||||
| Test.kt:101:22:101:30 | ... -> ... | Test.kt:101:22:101:30 | <Expr>; |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:102:9:102:25 | throw ... |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:105:9:107:5 | ... -> ... |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:106:9:106:29 | <Expr>; |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:108:9:108:29 | <Expr>; |
|
||||
| Test.kt:101:33:103:5 | { ... } | Test.kt:102:9:102:25 | throw ... |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:105:9:107:5 | ... -> ... |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:106:9:106:29 | <Expr>; |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:105:5:109:5 | <Expr>; | Test.kt:108:9:108:29 | <Expr>; |
|
||||
| Test.kt:105:9:107:5 | ... -> ... | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:105:9:107:5 | ... -> ... | Test.kt:106:9:106:29 | <Expr>; |
|
||||
| Test.kt:105:9:107:5 | ... -> ... | Test.kt:107:16:109:5 | ... -> ... |
|
||||
| Test.kt:105:9:107:5 | ... -> ... | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:105:9:107:5 | ... -> ... | Test.kt:108:9:108:29 | <Expr>; |
|
||||
| Test.kt:105:20:107:5 | { ... } | Test.kt:106:9:106:29 | <Expr>; |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | Test.kt:107:27:109:5 | { ... } |
|
||||
| Test.kt:107:16:109:5 | ... -> ... | Test.kt:108:9:108:29 | <Expr>; |
|
||||
| Test.kt:107:27:109:5 | { ... } | Test.kt:108:9:108:29 | <Expr>; |
|
||||
|
||||
@@ -204,3 +204,18 @@
|
||||
| Test.kt:95:36:97:2 | { ... } | Test.kt:95:4:97:2 | catch (...) |
|
||||
| Test.kt:96:3:96:10 | return ... | Test.kt:95:4:97:2 | catch (...) |
|
||||
| Test.kt:96:3:96:10 | return ... | Test.kt:95:36:97:2 | { ... } |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:100:25:110:1 | { ... } |
|
||||
| Test.kt:101:5:103:5 | ... -> ... | Test.kt:101:5:103:5 | <Expr>; |
|
||||
| Test.kt:101:5:103:5 | <Expr>; | Test.kt:100:25:110:1 | { ... } |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:100:25:110:1 | { ... } |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:101:5:103:5 | ... -> ... |
|
||||
| Test.kt:101:9:101:30 | ... -> ... | Test.kt:101:5:103:5 | <Expr>; |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:100:25:110:1 | { ... } |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:101:5:103:5 | ... -> ... |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:101:5:103:5 | <Expr>; |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:101:9:101:30 | ... -> ... |
|
||||
| Test.kt:101:22:101:30 | <Expr>; | Test.kt:101:22:101:30 | ... -> ... |
|
||||
| Test.kt:102:9:102:25 | throw ... | Test.kt:101:33:103:5 | { ... } |
|
||||
| Test.kt:105:9:107:5 | ... -> ... | Test.kt:105:5:109:5 | <Expr>; |
|
||||
| Test.kt:106:9:106:29 | <Expr>; | Test.kt:105:20:107:5 | { ... } |
|
||||
| Test.kt:108:9:108:29 | <Expr>; | Test.kt:107:27:109:5 | { ... } |
|
||||
|
||||
11
java/ql/test/kotlin/query-tests/UselessNullCheck/Test.kt
Normal file
11
java/ql/test/kotlin/query-tests/UselessNullCheck/Test.kt
Normal file
@@ -0,0 +1,11 @@
|
||||
fun fn(x:Any?, y: Any?) {
|
||||
if (x == null && y == null) {
|
||||
throw Exception()
|
||||
}
|
||||
|
||||
if (x != null) {
|
||||
println("x not null")
|
||||
} else if (y != null) {
|
||||
println("y not null")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
| Test.kt:8:16:8:24 | ... (value not-equals) ... | This check is useless, $@ cannot be null here, since it is guarded by $@. | Test.kt:8:16:8:16 | y | y | Test.kt:2:22:2:30 | ... (value equals) ... | ... (value equals) ... |
|
||||
@@ -0,0 +1 @@
|
||||
Language Abuse/UselessNullCheck.ql
|
||||
Reference in New Issue
Block a user