From 8db987e4ea2d0b83ee3dd7b4549c0df18d157879 Mon Sep 17 00:00:00 2001 From: Anders Fugmann Date: Sat, 11 Jul 2026 15:07:43 +0200 Subject: [PATCH] Converge if/when branch (WhenBranch) locations onto K2 per-branch spans The K1 frontend lowers `if`/`when` branches with their raw IR offsets collapsed onto the whole enclosing IrWhen expression, so every branch reports the same span (e.g. `stmts.kt:17:26:17:58`). K2 records per-branch spans reconstructed from the branch condition start through the result end (or just the result span for an `else` branch). Reconstruct the per-branch span from the branch's own condition/result offsets, gated on the raw branch span being collapsed onto the enclosing IrWhen (as under K1); under K2 the raw per-branch offsets already differ so the helper is a no-op. `correctedEndOffset` additionally fixes K1 recording a bare assignment's raw end at its left-hand side rather than past its right-hand value. Example (stmts.kt:17): before: 17:26:17:58 (x2, both branches collapsed onto the IrWhen) after: 17:29:17:43 and 17:50:17:58 (per-branch, matching K2) Only the K1 (test-kotlin1) expected files change; the K2 (test-kotlin2) expected files are unchanged. Controlflow expected files converge as a pure cascade of the branch-location shift. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../src/main/kotlin/KotlinFileExtractor.kt | 52 +++- .../library-tests/classes/PrintAst.expected | 6 +- .../controlflow/basic/bbStmts.expected | 14 +- .../basic/bbStrictDominance.expected | 6 +- .../controlflow/basic/bbSuccessor.expected | 8 +- .../controlflow/basic/getASuccessor.expected | 28 +- .../basic/strictDominance.expected | 250 +++++++++--------- .../basic/strictPostDominance.expected | 86 +++--- .../controlflow/dominance/dominator.expected | 4 +- .../library-tests/exprs/PrintAst.expected | 2 +- .../library-tests/stmts/stmts.expected | 48 ++-- 11 files changed, 277 insertions(+), 227 deletions(-) diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt index e8020af651e..95e3f2463c1 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt @@ -3156,6 +3156,53 @@ open class KotlinFileExtractor( ) } + /** + * Reconstructs the location of an `if`/`when` branch [b] (of the enclosing [IrWhen] [w]) + * from the branch's own condition/result offsets, or null to leave the raw location in + * place. + * + * The K1 frontend lowers `if`/`when` branches with their raw IR offsets collapsed onto the + * whole enclosing expression, so every branch reports the same span as [w]. K2 records + * per-branch spans: the condition start through the result end, or (for an `else` branch, + * whose condition is a synthetic `true`) just the result span. Reconstruct that per-branch + * span from the branch's condition/result offsets. + * + * This only fires when the raw branch span is collapsed onto [w] (as under K1); under K2 the + * raw per-branch offsets already differ from [w], so it returns null and the raw location is + * kept. It also returns null when the reconstructed offsets are undefined, synthetic, + * inverted, or fall outside [w], so it is a strict no-op except for the collapsed case. + */ + private fun getWhenBranchLocation(w: IrWhen, b: IrBranch): Label? { + if (b.startOffset != w.startOffset || b.endOffset != w.endOffset) return null + val start = if (b is IrElseBranch) b.result.startOffset else b.condition.startOffset + val end = correctedEndOffset(b.result) + if (start == UNDEFINED_OFFSET || end == UNDEFINED_OFFSET) return null + if (start == SYNTHETIC_OFFSET || end == SYNTHETIC_OFFSET) return null + if (start > end || start < w.startOffset || end > w.endOffset) return null + return tw.getLocation(start, end) + } + + /** + * Returns the end offset of [e], correcting for the K1 frontend recording an assignment's + * raw end offset at its left-hand side rather than past its right-hand value. When [e] is an + * `IrSetValue`/`IrSetField` whose assigned value ends later than the assignment's own raw + * end (as under K1), the value's end offset is used; otherwise the raw end offset is kept, so + * this is a no-op under K2 (where the assignment already spans its value). + */ + private fun correctedEndOffset(e: IrExpression): Int { + val valueEnd = + when (e) { + is IrSetValue -> e.value.endOffset + is IrSetField -> e.value.endOffset + else -> UNDEFINED_OFFSET + } + return if ( + valueEnd != UNDEFINED_OFFSET && valueEnd != SYNTHETIC_OFFSET && valueEnd > e.endOffset + ) + valueEnd + else e.endOffset + } + private fun extractVariable( v: IrVariable, callable: Label, @@ -6631,7 +6678,10 @@ open class KotlinFileExtractor( } e.branches.forEachIndexed { i, b -> val bId = tw.getFreshIdLabel() - val bLocId = getPsiBasedLocation(b) ?: tw.getLocation(b) + val bLocId = + getWhenBranchLocation(e, b) + ?: getPsiBasedLocation(b) + ?: tw.getLocation(b) tw.writeStmts_whenbranch(bId, id, i, callable) tw.writeHasLocation(bId, bLocId) extractExpressionExpr(b.condition, callable, bId, 0, bId) diff --git a/java/ql/test-kotlin1/library-tests/classes/PrintAst.expected b/java/ql/test-kotlin1/library-tests/classes/PrintAst.expected index 20f09d14706..bac854ce33a 100644 --- a/java/ql/test-kotlin1/library-tests/classes/PrintAst.expected +++ b/java/ql/test-kotlin1/library-tests/classes/PrintAst.expected @@ -279,7 +279,7 @@ classes.kt: # 66| 1: [ExprStmt] ; # 66| 0: [ClassInstanceExpr] new (...) # 66| -3: [TypeAccess] Object -# 65| 1: [WhenBranch] ... -> ... +# 68| 1: [WhenBranch] ... -> ... # 65| 0: [BooleanLiteral] true # 68| 1: [ReturnStmt] return ... # 68| 0: [StmtExpr] @@ -892,7 +892,7 @@ localClassField.kt: # 4| 1: [ExprStmt] ; # 4| 0: [ClassInstanceExpr] new L(...) # 4| -3: [TypeAccess] L -# 2| 1: [WhenBranch] ... -> ... +# 5| 1: [WhenBranch] ... -> ... # 2| 0: [BooleanLiteral] true # 5| 1: [BlockStmt] { ... } # 2| 3: [Method] getX @@ -916,7 +916,7 @@ localClassField.kt: # 9| 1: [ExprStmt] ; # 9| 0: [ClassInstanceExpr] new L(...) # 9| -3: [TypeAccess] L -# 7| 1: [WhenBranch] ... -> ... +# 10| 1: [WhenBranch] ... -> ... # 7| 0: [BooleanLiteral] true # 10| 1: [BlockStmt] { ... } # 7| 5: [Method] getY diff --git a/java/ql/test-kotlin1/library-tests/controlflow/basic/bbStmts.expected b/java/ql/test-kotlin1/library-tests/controlflow/basic/bbStmts.expected index 2f7da01dc65..431b1ab32c2 100644 --- a/java/ql/test-kotlin1/library-tests/controlflow/basic/bbStmts.expected +++ b/java/ql/test-kotlin1/library-tests/controlflow/basic/bbStmts.expected @@ -35,7 +35,7 @@ | Test.kt:4:2:79:2 | Entry | 25 | Test.kt:8:3:8:16 | After var ...; | | Test.kt:4:2:79:2 | Entry | 26 | Test.kt:11:3:16:3 | ; | | Test.kt:4:2:79:2 | Entry | 27 | Test.kt:11:3:16:3 | when ... | -| Test.kt:4:2:79:2 | Entry | 28 | Test.kt:11:3:16:3 | ... -> ... | +| Test.kt:4:2:79:2 | Entry | 28 | Test.kt:11:7:14:3 | ... -> ... | | Test.kt:4:2:79:2 | Entry | 29 | Test.kt:11:7:11:11 | Before ... > ... | | Test.kt:4:2:79:2 | Entry | 30 | Test.kt:11:7:11:7 | x | | Test.kt:4:2:79:2 | Entry | 31 | Test.kt:11:11:11:11 | 0 | @@ -53,13 +53,13 @@ | Test.kt:11:3:16:3 | After when ... | 8 | Test.kt:18:3:18:3 | After ; | | Test.kt:11:3:16:3 | After when ... | 9 | Test.kt:21:3:24:9 | ; | | Test.kt:11:3:16:3 | After when ... | 10 | Test.kt:21:3:24:9 | when ... | -| Test.kt:11:3:16:3 | After when ... | 11 | Test.kt:21:3:24:9 | ... -> ... | +| Test.kt:11:3:16:3 | After when ... | 11 | Test.kt:21:6:22:9 | ... -> ... | | Test.kt:11:3:16:3 | After when ... | 12 | Test.kt:21:6:21:10 | Before ... < ... | | Test.kt:11:3:16:3 | After when ... | 13 | Test.kt:21:6:21:6 | x | | Test.kt:11:3:16:3 | After when ... | 14 | Test.kt:21:10:21:10 | 0 | | Test.kt:11:3:16:3 | After when ... | 15 | Test.kt:21:6:21:10 | ... < ... | | Test.kt:11:7:11:11 | After ... > ... [false] | 0 | Test.kt:11:7:11:11 | After ... > ... [false] | -| Test.kt:11:7:11:11 | After ... > ... [false] | 1 | Test.kt:11:3:16:3 | ... -> ... | +| Test.kt:11:7:11:11 | After ... > ... [false] | 1 | Test.kt:14:10:16:3 | ... -> ... | | Test.kt:11:7:11:11 | After ... > ... [false] | 2 | Test.kt:11:3:16:3 | true | | Test.kt:11:7:11:11 | After ... > ... [false] | 3 | Test.kt:11:3:16:3 | After true [true] | | Test.kt:11:7:11:11 | After ... > ... [false] | 4 | Test.kt:14:10:16:3 | { ... } | @@ -89,7 +89,7 @@ | Test.kt:11:7:11:11 | After ... > ... [true] | 15 | Test.kt:13:4:13:4 | After ; | | Test.kt:11:7:11:11 | After ... > ... [true] | 16 | Test.kt:11:14:14:3 | After { ... } | | Test.kt:21:6:21:10 | After ... < ... [false] | 0 | Test.kt:21:6:21:10 | After ... < ... [false] | -| Test.kt:21:6:21:10 | After ... < ... [false] | 1 | Test.kt:21:3:24:9 | ... -> ... | +| Test.kt:21:6:21:10 | After ... < ... [false] | 1 | Test.kt:24:4:24:9 | ... -> ... | | Test.kt:21:6:21:10 | After ... < ... [false] | 2 | Test.kt:21:3:24:9 | true | | Test.kt:21:6:21:10 | After ... < ... [false] | 3 | Test.kt:21:3:24:9 | After true [true] | | Test.kt:21:6:21:10 | After ... < ... [false] | 4 | Test.kt:24:4:24:9 | Before return ... | @@ -114,7 +114,7 @@ | Test.kt:21:6:21:10 | After ... < ... [true] | 16 | Test.kt:27:3:27:3 | After ; | | Test.kt:21:6:21:10 | After ... < ... [true] | 17 | Test.kt:30:3:33:3 | ; | | Test.kt:21:6:21:10 | After ... < ... [true] | 18 | Test.kt:30:3:33:3 | when ... | -| Test.kt:21:6:21:10 | After ... < ... [true] | 19 | Test.kt:30:3:33:3 | ... -> ... | +| Test.kt:21:6:21:10 | After ... < ... [true] | 19 | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:21:6:21:10 | After ... < ... [true] | 20 | Test.kt:30:7:30:12 | Before ... (value equals) ... | | Test.kt:21:6:21:10 | After ... < ... [true] | 21 | Test.kt:30:7:30:7 | x | | Test.kt:21:6:21:10 | After ... < ... [true] | 22 | Test.kt:30:12:30:12 | 0 | @@ -277,7 +277,7 @@ | Test.kt:100:1:110:1 | Entry | 1 | Test.kt:100:25:110:1 | { ... } | | Test.kt:100:1:110:1 | Entry | 2 | Test.kt:101:5:103:5 | ; | | Test.kt:100:1:110:1 | Entry | 3 | Test.kt:101:5:103:5 | when ... | -| Test.kt:100:1:110:1 | Entry | 4 | Test.kt:101:5:103:5 | ... -> ... | +| Test.kt:100:1:110:1 | Entry | 4 | Test.kt:101:9:103:5 | ... -> ... | | Test.kt:100:1:110:1 | Entry | 5 | Test.kt:101:9:101:30 | ... && ... | | Test.kt:100:1:110:1 | Entry | 6 | Test.kt:101:9:101:17 | Before ... (value equals) ... | | Test.kt:100:1:110:1 | Entry | 7 | Test.kt:101:9:101:9 | x | @@ -343,7 +343,7 @@ | Test.kt:112:1:116:1 | Entry | 1 | Test.kt:112:32:116:1 | { ... } | | Test.kt:112:1:116:1 | Entry | 2 | Test.kt:113:5:115:5 | ; | | Test.kt:112:1:116:1 | Entry | 3 | Test.kt:113:5:115:5 | when ... | -| Test.kt:112:1:116:1 | Entry | 4 | Test.kt:113:5:115:5 | ... -> ... | +| Test.kt:112:1:116:1 | Entry | 4 | Test.kt:113:9:115:5 | ... -> ... | | Test.kt:112:1:116:1 | Entry | 5 | Test.kt:113:9:113:14 | ... && ... | | Test.kt:112:1:116:1 | Entry | 6 | Test.kt:113:9:113:9 | x | | Test.kt:113:5:115:5 | After when ... | 0 | Test.kt:113:5:115:5 | After when ... | diff --git a/java/ql/test-kotlin1/library-tests/controlflow/basic/bbStrictDominance.expected b/java/ql/test-kotlin1/library-tests/controlflow/basic/bbStrictDominance.expected index 54ffb7972eb..8eab60f8df4 100644 --- a/java/ql/test-kotlin1/library-tests/controlflow/basic/bbStrictDominance.expected +++ b/java/ql/test-kotlin1/library-tests/controlflow/basic/bbStrictDominance.expected @@ -1,17 +1,17 @@ | Test.kt:4:13:79:2 | { ... } | Test.kt:4:2:79:2 | Normal Exit | -| Test.kt:4:13:79:2 | { ... } | Test.kt:11:3:16:3 | ... -> ... | | Test.kt:4:13:79:2 | { ... } | Test.kt:11:14:14:3 | { ... } | +| Test.kt:4:13:79:2 | { ... } | Test.kt:14:10:16:3 | ... -> ... | | Test.kt:4:13:79:2 | { ... } | Test.kt:18:3:18:3 | ; | -| Test.kt:4:13:79:2 | { ... } | Test.kt:21:3:24:9 | ... -> ... | | Test.kt:4:13:79:2 | { ... } | Test.kt:22:4:22:4 | ; | +| Test.kt:4:13:79:2 | { ... } | Test.kt:24:4:24:9 | ... -> ... | | Test.kt:4:13:79:2 | { ... } | Test.kt:30:15:33:3 | { ... } | | Test.kt:4:13:79:2 | { ... } | Test.kt:35:3:35:3 | ; | | Test.kt:4:13:79:2 | { ... } | Test.kt:38:9:38:9 | x | | Test.kt:4:13:79:2 | { ... } | Test.kt:38:16:41:3 | { ... } | | Test.kt:4:13:79:2 | { ... } | Test.kt:43:3:43:3 | ; | | Test.kt:18:3:18:3 | ; | Test.kt:4:2:79:2 | Normal Exit | -| Test.kt:18:3:18:3 | ; | Test.kt:21:3:24:9 | ... -> ... | | Test.kt:18:3:18:3 | ; | Test.kt:22:4:22:4 | ; | +| Test.kt:18:3:18:3 | ; | Test.kt:24:4:24:9 | ... -> ... | | Test.kt:18:3:18:3 | ; | Test.kt:30:15:33:3 | { ... } | | Test.kt:18:3:18:3 | ; | Test.kt:35:3:35:3 | ; | | Test.kt:18:3:18:3 | ; | Test.kt:38:9:38:9 | x | diff --git a/java/ql/test-kotlin1/library-tests/controlflow/basic/bbSuccessor.expected b/java/ql/test-kotlin1/library-tests/controlflow/basic/bbSuccessor.expected index d7cec393df1..b19a46e7ec4 100644 --- a/java/ql/test-kotlin1/library-tests/controlflow/basic/bbSuccessor.expected +++ b/java/ql/test-kotlin1/library-tests/controlflow/basic/bbSuccessor.expected @@ -1,12 +1,12 @@ -| Test.kt:4:13:79:2 | { ... } | Test.kt:11:3:16:3 | ... -> ... | | Test.kt:4:13:79:2 | { ... } | Test.kt:11:14:14:3 | { ... } | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:18:3:18:3 | ; | +| Test.kt:4:13:79:2 | { ... } | Test.kt:14:10:16:3 | ... -> ... | | Test.kt:11:14:14:3 | { ... } | Test.kt:18:3:18:3 | ; | -| Test.kt:18:3:18:3 | ; | Test.kt:21:3:24:9 | ... -> ... | +| Test.kt:14:10:16:3 | ... -> ... | Test.kt:18:3:18:3 | ; | | Test.kt:18:3:18:3 | ; | Test.kt:22:4:22:4 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:4:2:79:2 | Normal Exit | +| Test.kt:18:3:18:3 | ; | Test.kt:24:4:24:9 | ... -> ... | | Test.kt:22:4:22:4 | ; | Test.kt:30:7:30:12 | After ... (value equals) ... [false] | | Test.kt:22:4:22:4 | ; | Test.kt:30:15:33:3 | { ... } | +| Test.kt:24:4:24:9 | ... -> ... | Test.kt:4:2:79:2 | Normal Exit | | Test.kt:30:7:30:12 | After ... (value equals) ... [false] | Test.kt:35:3:35:3 | ; | | Test.kt:30:15:33:3 | { ... } | Test.kt:35:3:35:3 | ; | | Test.kt:35:3:35:3 | ; | Test.kt:38:9:38:9 | x | diff --git a/java/ql/test-kotlin1/library-tests/controlflow/basic/getASuccessor.expected b/java/ql/test-kotlin1/library-tests/controlflow/basic/getASuccessor.expected index 305cc1b6b2a..60566f33924 100644 --- a/java/ql/test-kotlin1/library-tests/controlflow/basic/getASuccessor.expected +++ b/java/ql/test-kotlin1/library-tests/controlflow/basic/getASuccessor.expected @@ -19,14 +19,13 @@ | Test.kt:8:3:8:16 | var ...; | LocalVariableDeclStmt | Test.kt:8:16:8:16 | 0 | IntegerLiteral | | Test.kt:8:3:8:16 | w | LocalVariableDeclExpr | Test.kt:11:3:16:3 | ; | ExprStmt | | Test.kt:8:16:8:16 | 0 | IntegerLiteral | Test.kt:8:3:8:16 | w | LocalVariableDeclExpr | -| Test.kt:11:3:16:3 | ... -> ... | WhenBranch | Test.kt:11:3:16:3 | true | BooleanLiteral | -| Test.kt:11:3:16:3 | ... -> ... | WhenBranch | Test.kt:11:7:11:7 | x | VarAccess | | Test.kt:11:3:16:3 | ; | ExprStmt | Test.kt:11:3:16:3 | when ... | WhenExpr | | Test.kt:11:3:16:3 | true | BooleanLiteral | Test.kt:14:10:16:3 | { ... } | BlockStmt | -| Test.kt:11:3:16:3 | when ... | WhenExpr | Test.kt:11:3:16:3 | ... -> ... | WhenBranch | +| Test.kt:11:3:16:3 | when ... | WhenExpr | Test.kt:11:7:14:3 | ... -> ... | WhenBranch | | Test.kt:11:7:11:7 | x | VarAccess | Test.kt:11:11:11:11 | 0 | IntegerLiteral | -| Test.kt:11:7:11:11 | ... > ... | GTExpr | Test.kt:11:3:16:3 | ... -> ... | WhenBranch | | Test.kt:11:7:11:11 | ... > ... | GTExpr | Test.kt:11:14:14:3 | { ... } | BlockStmt | +| Test.kt:11:7:11:11 | ... > ... | GTExpr | Test.kt:14:10:16:3 | ... -> ... | WhenBranch | +| Test.kt:11:7:14:3 | ... -> ... | WhenBranch | Test.kt:11:7:11:7 | x | VarAccess | | Test.kt:11:11:11:11 | 0 | IntegerLiteral | Test.kt:11:7:11:11 | ... > ... | GTExpr | | Test.kt:11:14:14:3 | { ... } | BlockStmt | Test.kt:12:4:12:4 | ; | ExprStmt | | Test.kt:12:4:12:4 | ; | ExprStmt | Test.kt:12:4:12:4 | y | VarAccess | @@ -37,6 +36,7 @@ | Test.kt:13:4:13:4 | z | VarAccess | Test.kt:13:8:13:9 | 10 | IntegerLiteral | | Test.kt:13:4:13:9 | ...=... | AssignExpr | Test.kt:18:3:18:3 | ; | ExprStmt | | Test.kt:13:8:13:9 | 10 | IntegerLiteral | Test.kt:13:4:13:9 | ...=... | AssignExpr | +| Test.kt:14:10:16:3 | ... -> ... | WhenBranch | Test.kt:11:3:16:3 | true | BooleanLiteral | | Test.kt:14:10:16:3 | { ... } | BlockStmt | Test.kt:15:4:15:4 | ; | ExprStmt | | Test.kt:15:4:15:4 | ; | ExprStmt | Test.kt:15:4:15:4 | y | VarAccess | | Test.kt:15:4:15:4 | y | VarAccess | Test.kt:15:8:15:9 | 30 | LongLiteral | @@ -46,31 +46,31 @@ | Test.kt:18:3:18:3 | z | VarAccess | Test.kt:18:7:18:7 | 0 | IntegerLiteral | | Test.kt:18:3:18:7 | ...=... | AssignExpr | Test.kt:21:3:24:9 | ; | ExprStmt | | Test.kt:18:7:18:7 | 0 | IntegerLiteral | Test.kt:18:3:18:7 | ...=... | AssignExpr | -| Test.kt:21:3:24:9 | ... -> ... | WhenBranch | Test.kt:21:3:24:9 | true | BooleanLiteral | -| Test.kt:21:3:24:9 | ... -> ... | WhenBranch | Test.kt:21:6:21:6 | x | VarAccess | | Test.kt:21:3:24:9 | ; | ExprStmt | Test.kt:21:3:24:9 | when ... | WhenExpr | | Test.kt:21:3:24:9 | true | BooleanLiteral | Test.kt:24:4:24:9 | INSTANCE | VarAccess | -| Test.kt:21:3:24:9 | when ... | WhenExpr | Test.kt:21:3:24:9 | ... -> ... | WhenBranch | +| Test.kt:21:3:24:9 | when ... | WhenExpr | Test.kt:21:6:22:9 | ... -> ... | WhenBranch | | Test.kt:21:6:21:6 | x | VarAccess | Test.kt:21:10:21:10 | 0 | IntegerLiteral | -| Test.kt:21:6:21:10 | ... < ... | LTExpr | Test.kt:21:3:24:9 | ... -> ... | WhenBranch | | Test.kt:21:6:21:10 | ... < ... | LTExpr | Test.kt:22:4:22:4 | ; | ExprStmt | +| Test.kt:21:6:21:10 | ... < ... | LTExpr | Test.kt:24:4:24:9 | ... -> ... | WhenBranch | +| Test.kt:21:6:22:9 | ... -> ... | WhenBranch | Test.kt:21:6:21:6 | x | VarAccess | | Test.kt:21:10:21:10 | 0 | IntegerLiteral | Test.kt:21:6:21:10 | ... < ... | LTExpr | | Test.kt:22:4:22:4 | ; | ExprStmt | Test.kt:22:4:22:4 | y | VarAccess | | Test.kt:22:4:22:4 | y | VarAccess | Test.kt:22:8:22:9 | 40 | LongLiteral | | Test.kt:22:4:22:9 | ...=... | AssignExpr | Test.kt:27:3:27:3 | ; | ExprStmt | | Test.kt:22:8:22:9 | 40 | LongLiteral | Test.kt:22:4:22:9 | ...=... | AssignExpr | +| Test.kt:24:4:24:9 | ... -> ... | WhenBranch | Test.kt:21:3:24:9 | true | BooleanLiteral | | Test.kt:24:4:24:9 | INSTANCE | VarAccess | Test.kt:24:4:24:9 | return ... | ReturnStmt | | Test.kt:24:4:24:9 | return ... | ReturnStmt | Test.kt:4:2:79:2 | Normal Exit | Method | | Test.kt:27:3:27:3 | ; | ExprStmt | Test.kt:27:3:27:3 | z | VarAccess | | Test.kt:27:3:27:3 | z | VarAccess | Test.kt:27:7:27:8 | 10 | IntegerLiteral | | Test.kt:27:3:27:8 | ...=... | AssignExpr | Test.kt:30:3:33:3 | ; | ExprStmt | | Test.kt:27:7:27:8 | 10 | IntegerLiteral | Test.kt:27:3:27:8 | ...=... | AssignExpr | -| Test.kt:30:3:33:3 | ... -> ... | WhenBranch | Test.kt:30:7:30:7 | x | VarAccess | | Test.kt:30:3:33:3 | ; | ExprStmt | Test.kt:30:3:33:3 | when ... | WhenExpr | -| Test.kt:30:3:33:3 | when ... | WhenExpr | Test.kt:30:3:33:3 | ... -> ... | WhenBranch | +| Test.kt:30:3:33:3 | when ... | WhenExpr | Test.kt:30:7:33:3 | ... -> ... | WhenBranch | | Test.kt:30:7:30:7 | x | VarAccess | Test.kt:30:12:30:12 | 0 | IntegerLiteral | | Test.kt:30:7:30:12 | ... (value equals) ... | ValueEQExpr | Test.kt:30:15:33:3 | { ... } | BlockStmt | | Test.kt:30:7:30:12 | ... (value equals) ... | ValueEQExpr | Test.kt:35:3:35:3 | ; | ExprStmt | +| Test.kt:30:7:33:3 | ... -> ... | WhenBranch | Test.kt:30:7:30:7 | x | VarAccess | | Test.kt:30:12:30:12 | 0 | IntegerLiteral | Test.kt:30:7:30:12 | ... (value equals) ... | ValueEQExpr | | Test.kt:30:15:33:3 | { ... } | BlockStmt | Test.kt:31:4:31:4 | ; | ExprStmt | | Test.kt:31:4:31:4 | ; | ExprStmt | Test.kt:31:4:31:4 | y | VarAccess | @@ -165,13 +165,13 @@ | Test.kt:100:1:110:1 | Exceptional Exit | Method | Test.kt:100:1:110:1 | Exit | Method | | Test.kt:100:1:110:1 | Normal Exit | Method | Test.kt:100:1:110:1 | Exit | Method | | Test.kt:100:25:110:1 | { ... } | BlockStmt | Test.kt:101:5:103:5 | ; | ExprStmt | -| Test.kt:101:5:103:5 | ... -> ... | WhenBranch | Test.kt:101:9:101:30 | ... && ... | AndLogicalExpr | | Test.kt:101:5:103:5 | ; | 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:5:103:5 | when ... | WhenExpr | Test.kt:101:9: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:22 | y | VarAccess | | Test.kt:101:9:101:17 | ... (value equals) ... | ValueEQExpr | Test.kt:105:5:109:5 | ; | ExprStmt | | Test.kt:101:9:101:30 | ... && ... | AndLogicalExpr | Test.kt:101:9:101:9 | x | VarAccess | +| Test.kt:101:9:103:5 | ... -> ... | WhenBranch | Test.kt:101:9:101:30 | ... && ... | AndLogicalExpr | | 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 | @@ -203,12 +203,12 @@ | Test.kt:112:1:116:1 | Entry | Method | Test.kt:112:32:116:1 | { ... } | BlockStmt | | Test.kt:112:1:116:1 | Normal Exit | Method | Test.kt:112:1:116:1 | Exit | Method | | Test.kt:112:32:116:1 | { ... } | BlockStmt | Test.kt:113:5:115:5 | ; | ExprStmt | -| Test.kt:113:5:115:5 | ... -> ... | WhenBranch | Test.kt:113:9:113:14 | ... && ... | AndLogicalExpr | | Test.kt:113:5:115:5 | ; | ExprStmt | Test.kt:113:5:115:5 | when ... | WhenExpr | -| Test.kt:113:5:115:5 | when ... | WhenExpr | Test.kt:113:5:115:5 | ... -> ... | WhenBranch | +| Test.kt:113:5:115:5 | when ... | WhenExpr | Test.kt:113:9:115:5 | ... -> ... | WhenBranch | | Test.kt:113:9:113:9 | x | VarAccess | Test.kt:112:1:116:1 | Normal Exit | Method | | Test.kt:113:9:113:9 | x | VarAccess | Test.kt:113:14:113:14 | y | VarAccess | | Test.kt:113:9:113:14 | ... && ... | AndLogicalExpr | Test.kt:113:9:113:9 | x | VarAccess | +| Test.kt:113:9:115:5 | ... -> ... | WhenBranch | Test.kt:113:9:113:14 | ... && ... | AndLogicalExpr | | Test.kt:113:14:113:14 | y | VarAccess | Test.kt:112:1:116:1 | Normal Exit | Method | | Test.kt:113:14:113:14 | y | VarAccess | Test.kt:113:17:115:5 | { ... } | BlockStmt | | Test.kt:113:17:115:5 | { ... } | BlockStmt | Test.kt:112:1:116:1 | Normal Exit | Method | diff --git a/java/ql/test-kotlin1/library-tests/controlflow/basic/strictDominance.expected b/java/ql/test-kotlin1/library-tests/controlflow/basic/strictDominance.expected index cf15ec35dbf..4aa7994a173 100644 --- a/java/ql/test-kotlin1/library-tests/controlflow/basic/strictDominance.expected +++ b/java/ql/test-kotlin1/library-tests/controlflow/basic/strictDominance.expected @@ -5,23 +5,23 @@ | Test.kt:4:13:79:2 | { ... } | Test.kt:6:3:6:18 | var ...; | | Test.kt:4:13:79:2 | { ... } | Test.kt:7:3:7:16 | var ...; | | Test.kt:4:13:79:2 | { ... } | Test.kt:8:3:8:16 | var ...; | -| Test.kt:4:13:79:2 | { ... } | Test.kt:11:3:16:3 | ... -> ... | -| Test.kt:4:13:79:2 | { ... } | Test.kt:11:3:16:3 | ... -> ... | | Test.kt:4:13:79:2 | { ... } | Test.kt:11:3:16:3 | ; | +| Test.kt:4:13:79:2 | { ... } | Test.kt:11:7:14:3 | ... -> ... | | Test.kt:4:13:79:2 | { ... } | Test.kt:11:14:14:3 | { ... } | | Test.kt:4:13:79:2 | { ... } | Test.kt:12:4:12:4 | ; | | Test.kt:4:13:79:2 | { ... } | Test.kt:13:4:13:4 | ; | +| Test.kt:4:13:79:2 | { ... } | Test.kt:14:10:16:3 | ... -> ... | | Test.kt:4:13:79:2 | { ... } | Test.kt:14:10:16:3 | { ... } | | Test.kt:4:13:79:2 | { ... } | Test.kt:15:4:15:4 | ; | | Test.kt:4:13:79:2 | { ... } | Test.kt:18:3:18:3 | ; | -| Test.kt:4:13:79:2 | { ... } | Test.kt:21:3:24:9 | ... -> ... | -| Test.kt:4:13:79:2 | { ... } | Test.kt:21:3:24:9 | ... -> ... | | Test.kt:4:13:79:2 | { ... } | Test.kt:21:3:24:9 | ; | +| Test.kt:4:13:79:2 | { ... } | Test.kt:21:6:22:9 | ... -> ... | | Test.kt:4:13:79:2 | { ... } | Test.kt:22:4:22:4 | ; | +| Test.kt:4:13:79:2 | { ... } | Test.kt:24:4:24:9 | ... -> ... | | Test.kt:4:13:79:2 | { ... } | Test.kt:24:4:24:9 | return ... | | Test.kt:4:13:79:2 | { ... } | Test.kt:27:3:27:3 | ; | -| Test.kt:4:13:79:2 | { ... } | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:4:13:79:2 | { ... } | Test.kt:30:3:33:3 | ; | +| Test.kt:4:13:79:2 | { ... } | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:4:13:79:2 | { ... } | Test.kt:30:15:33:3 | { ... } | | Test.kt:4:13:79:2 | { ... } | Test.kt:31:4:31:4 | ; | | Test.kt:4:13:79:2 | { ... } | Test.kt:32:4:32:4 | ; | @@ -41,23 +41,23 @@ | Test.kt:5:3:5:16 | var ...; | Test.kt:6:3:6:18 | var ...; | | Test.kt:5:3:5:16 | var ...; | Test.kt:7:3:7:16 | var ...; | | Test.kt:5:3:5:16 | var ...; | Test.kt:8:3:8:16 | var ...; | -| Test.kt:5:3:5:16 | var ...; | Test.kt:11:3:16:3 | ... -> ... | -| Test.kt:5:3:5:16 | var ...; | Test.kt:11:3:16:3 | ... -> ... | | Test.kt:5:3:5:16 | var ...; | Test.kt:11:3:16:3 | ; | +| Test.kt:5:3:5:16 | var ...; | Test.kt:11:7:14:3 | ... -> ... | | Test.kt:5:3:5:16 | var ...; | Test.kt:11:14:14:3 | { ... } | | Test.kt:5:3:5:16 | var ...; | Test.kt:12:4:12:4 | ; | | Test.kt:5:3:5:16 | var ...; | Test.kt:13:4:13:4 | ; | +| Test.kt:5:3:5:16 | var ...; | Test.kt:14:10:16:3 | ... -> ... | | Test.kt:5:3:5:16 | var ...; | Test.kt:14:10:16:3 | { ... } | | Test.kt:5:3:5:16 | var ...; | Test.kt:15:4:15:4 | ; | | Test.kt:5:3:5:16 | var ...; | Test.kt:18:3:18:3 | ; | -| Test.kt:5:3:5:16 | var ...; | Test.kt:21:3:24:9 | ... -> ... | -| Test.kt:5:3:5:16 | var ...; | Test.kt:21:3:24:9 | ... -> ... | | Test.kt:5:3:5:16 | var ...; | Test.kt:21:3:24:9 | ; | +| Test.kt:5:3:5:16 | var ...; | Test.kt:21:6:22:9 | ... -> ... | | Test.kt:5:3:5:16 | var ...; | Test.kt:22:4:22:4 | ; | +| Test.kt:5:3:5:16 | var ...; | Test.kt:24:4:24:9 | ... -> ... | | Test.kt:5:3:5:16 | var ...; | Test.kt:24:4:24:9 | return ... | | Test.kt:5:3:5:16 | var ...; | Test.kt:27:3:27:3 | ; | -| Test.kt:5:3:5:16 | var ...; | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:5:3:5:16 | var ...; | Test.kt:30:3:33:3 | ; | +| Test.kt:5:3:5:16 | var ...; | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:5:3:5:16 | var ...; | Test.kt:30:15:33:3 | { ... } | | Test.kt:5:3:5:16 | var ...; | Test.kt:31:4:31:4 | ; | | Test.kt:5:3:5:16 | var ...; | Test.kt:32:4:32:4 | ; | @@ -76,23 +76,23 @@ | Test.kt:5:3:5:16 | var ...; | Test.kt:78:3:78:8 | return ... | | Test.kt:6:3:6:18 | var ...; | Test.kt:7:3:7:16 | var ...; | | Test.kt:6:3:6:18 | var ...; | Test.kt:8:3:8:16 | var ...; | -| Test.kt:6:3:6:18 | var ...; | Test.kt:11:3:16:3 | ... -> ... | -| Test.kt:6:3:6:18 | var ...; | Test.kt:11:3:16:3 | ... -> ... | | Test.kt:6:3:6:18 | var ...; | Test.kt:11:3:16:3 | ; | +| Test.kt:6:3:6:18 | var ...; | Test.kt:11:7:14:3 | ... -> ... | | Test.kt:6:3:6:18 | var ...; | Test.kt:11:14:14:3 | { ... } | | Test.kt:6:3:6:18 | var ...; | Test.kt:12:4:12:4 | ; | | Test.kt:6:3:6:18 | var ...; | Test.kt:13:4:13:4 | ; | +| Test.kt:6:3:6:18 | var ...; | Test.kt:14:10:16:3 | ... -> ... | | Test.kt:6:3:6:18 | var ...; | Test.kt:14:10:16:3 | { ... } | | Test.kt:6:3:6:18 | var ...; | Test.kt:15:4:15:4 | ; | | Test.kt:6:3:6:18 | var ...; | Test.kt:18:3:18:3 | ; | -| Test.kt:6:3:6:18 | var ...; | Test.kt:21:3:24:9 | ... -> ... | -| Test.kt:6:3:6:18 | var ...; | Test.kt:21:3:24:9 | ... -> ... | | Test.kt:6:3:6:18 | var ...; | Test.kt:21:3:24:9 | ; | +| Test.kt:6:3:6:18 | var ...; | Test.kt:21:6:22:9 | ... -> ... | | Test.kt:6:3:6:18 | var ...; | Test.kt:22:4:22:4 | ; | +| Test.kt:6:3:6:18 | var ...; | Test.kt:24:4:24:9 | ... -> ... | | Test.kt:6:3:6:18 | var ...; | Test.kt:24:4:24:9 | return ... | | Test.kt:6:3:6:18 | var ...; | Test.kt:27:3:27:3 | ; | -| Test.kt:6:3:6:18 | var ...; | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:6:3:6:18 | var ...; | Test.kt:30:3:33:3 | ; | +| Test.kt:6:3:6:18 | var ...; | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:6:3:6:18 | var ...; | Test.kt:30:15:33:3 | { ... } | | Test.kt:6:3:6:18 | var ...; | Test.kt:31:4:31:4 | ; | | Test.kt:6:3:6:18 | var ...; | Test.kt:32:4:32:4 | ; | @@ -110,23 +110,23 @@ | Test.kt:6:3:6:18 | var ...; | Test.kt:77:3:77:3 | ; | | Test.kt:6:3:6:18 | var ...; | Test.kt:78:3:78:8 | return ... | | Test.kt:7:3:7:16 | var ...; | Test.kt:8:3:8:16 | var ...; | -| Test.kt:7:3:7:16 | var ...; | Test.kt:11:3:16:3 | ... -> ... | -| Test.kt:7:3:7:16 | var ...; | Test.kt:11:3:16:3 | ... -> ... | | Test.kt:7:3:7:16 | var ...; | Test.kt:11:3:16:3 | ; | +| Test.kt:7:3:7:16 | var ...; | Test.kt:11:7:14:3 | ... -> ... | | Test.kt:7:3:7:16 | var ...; | Test.kt:11:14:14:3 | { ... } | | Test.kt:7:3:7:16 | var ...; | Test.kt:12:4:12:4 | ; | | Test.kt:7:3:7:16 | var ...; | Test.kt:13:4:13:4 | ; | +| Test.kt:7:3:7:16 | var ...; | Test.kt:14:10:16:3 | ... -> ... | | Test.kt:7:3:7:16 | var ...; | Test.kt:14:10:16:3 | { ... } | | Test.kt:7:3:7:16 | var ...; | Test.kt:15:4:15:4 | ; | | Test.kt:7:3:7:16 | var ...; | Test.kt:18:3:18:3 | ; | -| Test.kt:7:3:7:16 | var ...; | Test.kt:21:3:24:9 | ... -> ... | -| Test.kt:7:3:7:16 | var ...; | Test.kt:21:3:24:9 | ... -> ... | | Test.kt:7:3:7:16 | var ...; | Test.kt:21:3:24:9 | ; | +| Test.kt:7:3:7:16 | var ...; | Test.kt:21:6:22:9 | ... -> ... | | Test.kt:7:3:7:16 | var ...; | Test.kt:22:4:22:4 | ; | +| Test.kt:7:3:7:16 | var ...; | Test.kt:24:4:24:9 | ... -> ... | | Test.kt:7:3:7:16 | var ...; | Test.kt:24:4:24:9 | return ... | | Test.kt:7:3:7:16 | var ...; | Test.kt:27:3:27:3 | ; | -| Test.kt:7:3:7:16 | var ...; | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:7:3:7:16 | var ...; | Test.kt:30:3:33:3 | ; | +| Test.kt:7:3:7:16 | var ...; | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:7:3:7:16 | var ...; | Test.kt:30:15:33:3 | { ... } | | Test.kt:7:3:7:16 | var ...; | Test.kt:31:4:31:4 | ; | | Test.kt:7:3:7:16 | var ...; | Test.kt:32:4:32:4 | ; | @@ -143,23 +143,23 @@ | Test.kt:7:3:7:16 | var ...; | Test.kt:73:3:73:3 | ; | | Test.kt:7:3:7:16 | var ...; | Test.kt:77:3:77:3 | ; | | Test.kt:7:3:7:16 | var ...; | Test.kt:78:3:78:8 | return ... | -| Test.kt:8:3:8:16 | var ...; | Test.kt:11:3:16:3 | ... -> ... | -| Test.kt:8:3:8:16 | var ...; | Test.kt:11:3:16:3 | ... -> ... | | Test.kt:8:3:8:16 | var ...; | Test.kt:11:3:16:3 | ; | +| Test.kt:8:3:8:16 | var ...; | Test.kt:11:7:14:3 | ... -> ... | | Test.kt:8:3:8:16 | var ...; | Test.kt:11:14:14:3 | { ... } | | Test.kt:8:3:8:16 | var ...; | Test.kt:12:4:12:4 | ; | | Test.kt:8:3:8:16 | var ...; | Test.kt:13:4:13:4 | ; | +| Test.kt:8:3:8:16 | var ...; | Test.kt:14:10:16:3 | ... -> ... | | Test.kt:8:3:8:16 | var ...; | Test.kt:14:10:16:3 | { ... } | | Test.kt:8:3:8:16 | var ...; | Test.kt:15:4:15:4 | ; | | Test.kt:8:3:8:16 | var ...; | Test.kt:18:3:18:3 | ; | -| Test.kt:8:3:8:16 | var ...; | Test.kt:21:3:24:9 | ... -> ... | -| Test.kt:8:3:8:16 | var ...; | Test.kt:21:3:24:9 | ... -> ... | | Test.kt:8:3:8:16 | var ...; | Test.kt:21:3:24:9 | ; | +| Test.kt:8:3:8:16 | var ...; | Test.kt:21:6:22:9 | ... -> ... | | Test.kt:8:3:8:16 | var ...; | Test.kt:22:4:22:4 | ; | +| Test.kt:8:3:8:16 | var ...; | Test.kt:24:4:24:9 | ... -> ... | | Test.kt:8:3:8:16 | var ...; | Test.kt:24:4:24:9 | return ... | | Test.kt:8:3:8:16 | var ...; | Test.kt:27:3:27:3 | ; | -| Test.kt:8:3:8:16 | var ...; | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:8:3:8:16 | var ...; | Test.kt:30:3:33:3 | ; | +| Test.kt:8:3:8:16 | var ...; | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:8:3:8:16 | var ...; | Test.kt:30:15:33:3 | { ... } | | Test.kt:8:3:8:16 | var ...; | Test.kt:31:4:31:4 | ; | | Test.kt:8:3:8:16 | var ...; | Test.kt:32:4:32:4 | ; | @@ -176,55 +176,22 @@ | Test.kt:8:3:8:16 | var ...; | Test.kt:73:3:73:3 | ; | | Test.kt:8:3:8:16 | var ...; | Test.kt:77:3:77:3 | ; | | Test.kt:8:3:8:16 | var ...; | Test.kt:78:3:78:8 | return ... | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:11:3:16:3 | ... -> ... | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:11:14:14:3 | { ... } | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:12:4:12:4 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:13:4:13:4 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:14:10:16:3 | { ... } | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:14:10:16:3 | { ... } | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:15:4:15:4 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:15:4:15:4 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:18:3:18:3 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:21:3:24:9 | ... -> ... | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:21:3:24:9 | ... -> ... | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:21:3:24:9 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:22:4:22:4 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:24:4:24:9 | return ... | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:27:3:27:3 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:30:3:33:3 | ... -> ... | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:30:3:33:3 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:30:15:33:3 | { ... } | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:31:4:31:4 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:32:4:32:4 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:35:3:35:3 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:38:3:41:3 | while (...) | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:38:16:41:3 | { ... } | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:39:4:39:4 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:40:4:40:4 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:40:4:40:6 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:40:4:40:6 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:40:4:40:6 | var ...; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:40:4:40:6 | { ... } | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:43:3:43:3 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:73:3:73:3 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:77:3:77:3 | ; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:78:3:78:8 | return ... | -| Test.kt:11:3:16:3 | ; | Test.kt:11:3:16:3 | ... -> ... | -| Test.kt:11:3:16:3 | ; | Test.kt:11:3:16:3 | ... -> ... | +| Test.kt:11:3:16:3 | ; | Test.kt:11:7:14:3 | ... -> ... | | Test.kt:11:3:16:3 | ; | Test.kt:11:14:14:3 | { ... } | | Test.kt:11:3:16:3 | ; | Test.kt:12:4:12:4 | ; | | Test.kt:11:3:16:3 | ; | Test.kt:13:4:13:4 | ; | +| Test.kt:11:3:16:3 | ; | Test.kt:14:10:16:3 | ... -> ... | | Test.kt:11:3:16:3 | ; | Test.kt:14:10:16:3 | { ... } | | Test.kt:11:3:16:3 | ; | Test.kt:15:4:15:4 | ; | | Test.kt:11:3:16:3 | ; | Test.kt:18:3:18:3 | ; | -| Test.kt:11:3:16:3 | ; | Test.kt:21:3:24:9 | ... -> ... | -| Test.kt:11:3:16:3 | ; | Test.kt:21:3:24:9 | ... -> ... | | Test.kt:11:3:16:3 | ; | Test.kt:21:3:24:9 | ; | +| Test.kt:11:3:16:3 | ; | Test.kt:21:6:22:9 | ... -> ... | | Test.kt:11:3:16:3 | ; | Test.kt:22:4:22:4 | ; | +| Test.kt:11:3:16:3 | ; | Test.kt:24:4:24:9 | ... -> ... | | Test.kt:11:3:16:3 | ; | Test.kt:24:4:24:9 | return ... | | Test.kt:11:3:16:3 | ; | Test.kt:27:3:27:3 | ; | -| Test.kt:11:3:16:3 | ; | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:11:3:16:3 | ; | Test.kt:30:3:33:3 | ; | +| Test.kt:11:3:16:3 | ; | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:11:3:16:3 | ; | Test.kt:30:15:33:3 | { ... } | | Test.kt:11:3:16:3 | ; | Test.kt:31:4:31:4 | ; | | Test.kt:11:3:16:3 | ; | Test.kt:32:4:32:4 | ; | @@ -241,18 +208,51 @@ | Test.kt:11:3:16:3 | ; | Test.kt:73:3:73:3 | ; | | Test.kt:11:3:16:3 | ; | Test.kt:77:3:77:3 | ; | | Test.kt:11:3:16:3 | ; | Test.kt:78:3:78:8 | return ... | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:11:14:14:3 | { ... } | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:12:4:12:4 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:13:4:13:4 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:14:10:16:3 | ... -> ... | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:14:10:16:3 | { ... } | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:15:4:15:4 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:18:3:18:3 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:21:3:24:9 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:21:6:22:9 | ... -> ... | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:22:4:22:4 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:24:4:24:9 | ... -> ... | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:24:4:24:9 | return ... | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:27:3:27:3 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:30:3:33:3 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:30:7:33:3 | ... -> ... | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:30:15:33:3 | { ... } | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:31:4:31:4 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:32:4:32:4 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:35:3:35:3 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:38:3:41:3 | while (...) | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:38:16:41:3 | { ... } | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:39:4:39:4 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:40:4:40:4 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:40:4:40:6 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:40:4:40:6 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:40:4:40:6 | var ...; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:40:4:40:6 | { ... } | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:43:3:43:3 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:73:3:73:3 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:77:3:77:3 | ; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:78:3:78:8 | return ... | | Test.kt:11:14:14:3 | { ... } | Test.kt:12:4:12:4 | ; | | Test.kt:11:14:14:3 | { ... } | Test.kt:13:4:13:4 | ; | | Test.kt:12:4:12:4 | ; | Test.kt:13:4:13:4 | ; | +| Test.kt:14:10:16:3 | ... -> ... | Test.kt:14:10:16:3 | { ... } | +| Test.kt:14:10:16:3 | ... -> ... | Test.kt:15:4:15:4 | ; | | Test.kt:14:10:16:3 | { ... } | Test.kt:15:4:15:4 | ; | -| Test.kt:18:3:18:3 | ; | Test.kt:21:3:24:9 | ... -> ... | -| Test.kt:18:3:18:3 | ; | Test.kt:21:3:24:9 | ... -> ... | | Test.kt:18:3:18:3 | ; | Test.kt:21:3:24:9 | ; | +| Test.kt:18:3:18:3 | ; | Test.kt:21:6:22:9 | ... -> ... | | Test.kt:18:3:18:3 | ; | Test.kt:22:4:22:4 | ; | +| Test.kt:18:3:18:3 | ; | Test.kt:24:4:24:9 | ... -> ... | | Test.kt:18:3:18:3 | ; | Test.kt:24:4:24:9 | return ... | | Test.kt:18:3:18:3 | ; | Test.kt:27:3:27:3 | ; | -| Test.kt:18:3:18:3 | ; | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:18:3:18:3 | ; | Test.kt:30:3:33:3 | ; | +| Test.kt:18:3:18:3 | ; | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:18:3:18:3 | ; | Test.kt:30:15:33:3 | { ... } | | Test.kt:18:3:18:3 | ; | Test.kt:31:4:31:4 | ; | | Test.kt:18:3:18:3 | ; | Test.kt:32:4:32:4 | ; | @@ -269,36 +269,13 @@ | Test.kt:18:3:18:3 | ; | Test.kt:73:3:73:3 | ; | | Test.kt:18:3:18:3 | ; | Test.kt:77:3:77:3 | ; | | Test.kt:18:3:18:3 | ; | Test.kt:78:3:78:8 | return ... | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:21:3:24:9 | ... -> ... | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:22:4:22:4 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:24:4:24:9 | return ... | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:24:4:24:9 | return ... | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:27:3:27:3 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:30:3:33:3 | ... -> ... | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:30:3:33:3 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:30:15:33:3 | { ... } | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:31:4:31:4 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:32:4:32:4 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:35:3:35:3 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:38:3:41:3 | while (...) | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:38:16:41:3 | { ... } | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:39:4:39:4 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:40:4:40:4 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:40:4:40:6 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:40:4:40:6 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:40:4:40:6 | var ...; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:40:4:40:6 | { ... } | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:43:3:43:3 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:73:3:73:3 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:77:3:77:3 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:78:3:78:8 | return ... | -| Test.kt:21:3:24:9 | ; | Test.kt:21:3:24:9 | ... -> ... | -| Test.kt:21:3:24:9 | ; | Test.kt:21:3:24:9 | ... -> ... | +| Test.kt:21:3:24:9 | ; | Test.kt:21:6:22:9 | ... -> ... | | Test.kt:21:3:24:9 | ; | Test.kt:22:4:22:4 | ; | +| Test.kt:21:3:24:9 | ; | Test.kt:24:4:24:9 | ... -> ... | | Test.kt:21:3:24:9 | ; | Test.kt:24:4:24:9 | return ... | | Test.kt:21:3:24:9 | ; | Test.kt:27:3:27:3 | ; | -| Test.kt:21:3:24:9 | ; | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:21:3:24:9 | ; | Test.kt:30:3:33:3 | ; | +| Test.kt:21:3:24:9 | ; | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:21:3:24:9 | ; | Test.kt:30:15:33:3 | { ... } | | Test.kt:21:3:24:9 | ; | Test.kt:31:4:31:4 | ; | | Test.kt:21:3:24:9 | ; | Test.kt:32:4:32:4 | ; | @@ -315,9 +292,31 @@ | Test.kt:21:3:24:9 | ; | Test.kt:73:3:73:3 | ; | | Test.kt:21:3:24:9 | ; | Test.kt:77:3:77:3 | ; | | Test.kt:21:3:24:9 | ; | Test.kt:78:3:78:8 | return ... | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:22:4:22:4 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:24:4:24:9 | ... -> ... | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:24:4:24:9 | return ... | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:27:3:27:3 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:30:3:33:3 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:30:7:33:3 | ... -> ... | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:30:15:33:3 | { ... } | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:31:4:31:4 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:32:4:32:4 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:35:3:35:3 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:38:3:41:3 | while (...) | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:38:16:41:3 | { ... } | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:39:4:39:4 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:40:4:40:4 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:40:4:40:6 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:40:4:40:6 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:40:4:40:6 | var ...; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:40:4:40:6 | { ... } | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:43:3:43:3 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:73:3:73:3 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:77:3:77:3 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:78:3:78:8 | return ... | | Test.kt:22:4:22:4 | ; | Test.kt:27:3:27:3 | ; | -| Test.kt:22:4:22:4 | ; | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:22:4:22:4 | ; | Test.kt:30:3:33:3 | ; | +| Test.kt:22:4:22:4 | ; | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:22:4:22:4 | ; | Test.kt:30:15:33:3 | { ... } | | Test.kt:22:4:22:4 | ; | Test.kt:31:4:31:4 | ; | | Test.kt:22:4:22:4 | ; | Test.kt:32:4:32:4 | ; | @@ -334,8 +333,9 @@ | Test.kt:22:4:22:4 | ; | Test.kt:73:3:73:3 | ; | | Test.kt:22:4:22:4 | ; | Test.kt:77:3:77:3 | ; | | Test.kt:22:4:22:4 | ; | Test.kt:78:3:78:8 | return ... | -| Test.kt:27:3:27:3 | ; | Test.kt:30:3:33:3 | ... -> ... | +| Test.kt:24:4:24:9 | ... -> ... | Test.kt:24:4:24:9 | return ... | | Test.kt:27:3:27:3 | ; | Test.kt:30:3:33:3 | ; | +| Test.kt:27:3:27:3 | ; | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:27:3:27:3 | ; | Test.kt:30:15:33:3 | { ... } | | Test.kt:27:3:27:3 | ; | Test.kt:31:4:31:4 | ; | | Test.kt:27:3:27:3 | ; | Test.kt:32:4:32:4 | ; | @@ -352,23 +352,7 @@ | Test.kt:27:3:27:3 | ; | Test.kt:73:3:73:3 | ; | | Test.kt:27:3:27:3 | ; | Test.kt:77:3:77:3 | ; | | Test.kt:27:3:27:3 | ; | Test.kt:78:3:78:8 | return ... | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:30:15:33:3 | { ... } | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:31:4:31:4 | ; | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:32:4:32:4 | ; | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:35:3:35:3 | ; | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:38:3:41:3 | while (...) | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:38:16:41:3 | { ... } | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:39:4:39:4 | ; | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:40:4:40:4 | ; | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:40:4:40:6 | ; | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:40:4:40:6 | ; | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:40:4:40:6 | var ...; | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:40:4:40:6 | { ... } | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:43:3:43:3 | ; | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:73:3:73:3 | ; | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:77:3:77:3 | ; | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:78:3:78:8 | return ... | -| Test.kt:30:3:33:3 | ; | Test.kt:30:3:33:3 | ... -> ... | +| Test.kt:30:3:33:3 | ; | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:30:3:33:3 | ; | Test.kt:30:15:33:3 | { ... } | | Test.kt:30:3:33:3 | ; | Test.kt:31:4:31:4 | ; | | Test.kt:30:3:33:3 | ; | Test.kt:32:4:32:4 | ; | @@ -385,6 +369,22 @@ | Test.kt:30:3:33:3 | ; | Test.kt:73:3:73:3 | ; | | Test.kt:30:3:33:3 | ; | Test.kt:77:3:77:3 | ; | | Test.kt:30:3:33:3 | ; | Test.kt:78:3:78:8 | return ... | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:30:15:33:3 | { ... } | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:31:4:31:4 | ; | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:32:4:32:4 | ; | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:35:3:35:3 | ; | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:38:3:41:3 | while (...) | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:38:16:41:3 | { ... } | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:39:4:39:4 | ; | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:40:4:40:4 | ; | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:40:4:40:6 | ; | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:40:4:40:6 | ; | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:40:4:40:6 | var ...; | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:40:4:40:6 | { ... } | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:43:3:43:3 | ; | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:73:3:73:3 | ; | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:77:3:77:3 | ; | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:78:3:78:8 | return ... | | Test.kt:30:15:33:3 | { ... } | Test.kt:31:4:31:4 | ; | | Test.kt:30:15:33:3 | { ... } | Test.kt:32:4:32:4 | ; | | Test.kt:31:4:31:4 | ; | Test.kt:32:4:32:4 | ; | @@ -488,8 +488,8 @@ | 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 | ; | +| Test.kt:100:25:110:1 | { ... } | Test.kt:101:9:103:5 | ... -> ... | | 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 | ; | @@ -499,16 +499,7 @@ | Test.kt:100:25:110:1 | { ... } | Test.kt:107:12: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 | ; | -| 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 | ; | -| 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 | ; | -| Test.kt:101:5:103:5 | ... -> ... | Test.kt:107:12: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 | ; | -| Test.kt:101:5:103:5 | ; | Test.kt:101:5:103:5 | ... -> ... | +| Test.kt:101:5:103:5 | ; | Test.kt:101:9:103:5 | ... -> ... | | 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 | ; | @@ -518,6 +509,15 @@ | Test.kt:101:5:103:5 | ; | Test.kt:107:12: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 | ; | +| Test.kt:101:9:103:5 | ... -> ... | Test.kt:101:33:103:5 | { ... } | +| Test.kt:101:9:103:5 | ... -> ... | Test.kt:102:9:102:25 | throw ... | +| Test.kt:101:9:103:5 | ... -> ... | Test.kt:105:5:109:5 | ; | +| Test.kt:101:9:103:5 | ... -> ... | Test.kt:105:9:107:5 | ... -> ... | +| Test.kt:101:9:103:5 | ... -> ... | Test.kt:105:20:107:5 | { ... } | +| Test.kt:101:9:103:5 | ... -> ... | Test.kt:106:9:106:29 | ; | +| Test.kt:101:9:103:5 | ... -> ... | Test.kt:107:12:109:5 | ... -> ... | +| Test.kt:101:9:103:5 | ... -> ... | Test.kt:107:27:109:5 | { ... } | +| Test.kt:101:9:103:5 | ... -> ... | Test.kt:108:9:108:29 | ; | | Test.kt:101:33:103:5 | { ... } | Test.kt:102:9:102:25 | throw ... | | Test.kt:105:5:109:5 | ; | Test.kt:105:9:107:5 | ... -> ... | | Test.kt:105:5:109:5 | ; | Test.kt:105:20:107:5 | { ... } | @@ -534,12 +534,12 @@ | Test.kt:107:12:109:5 | ... -> ... | Test.kt:107:27:109:5 | { ... } | | Test.kt:107:12:109:5 | ... -> ... | Test.kt:108:9:108:29 | ; | | Test.kt:107:27:109:5 | { ... } | Test.kt:108:9:108:29 | ; | -| Test.kt:112:32:116:1 | { ... } | Test.kt:113:5:115:5 | ... -> ... | | Test.kt:112:32:116:1 | { ... } | Test.kt:113:5:115:5 | ; | +| Test.kt:112:32:116:1 | { ... } | Test.kt:113:9:115:5 | ... -> ... | | Test.kt:112:32:116:1 | { ... } | Test.kt:113:17:115:5 | { ... } | -| Test.kt:113:5:115:5 | ... -> ... | Test.kt:113:17:115:5 | { ... } | -| Test.kt:113:5:115:5 | ; | Test.kt:113:5:115:5 | ... -> ... | +| Test.kt:113:5:115:5 | ; | Test.kt:113:9:115:5 | ... -> ... | | Test.kt:113:5:115:5 | ; | Test.kt:113:17:115:5 | { ... } | +| Test.kt:113:9:115:5 | ... -> ... | Test.kt:113:17:115:5 | { ... } | | Test.kt:118:37:124:1 | { ... } | Test.kt:119:2:123:12 | ; | | Test.kt:118:37:124:1 | { ... } | Test.kt:120:3:123:10 | ... -> ... | | Test.kt:118:37:124:1 | { ... } | Test.kt:121:4:121:9 | ... -> ... | diff --git a/java/ql/test-kotlin1/library-tests/controlflow/basic/strictPostDominance.expected b/java/ql/test-kotlin1/library-tests/controlflow/basic/strictPostDominance.expected index fa0d8af7435..17ccee84c58 100644 --- a/java/ql/test-kotlin1/library-tests/controlflow/basic/strictPostDominance.expected +++ b/java/ql/test-kotlin1/library-tests/controlflow/basic/strictPostDominance.expected @@ -11,86 +11,86 @@ | Test.kt:8:3:8:16 | var ...; | Test.kt:5:3:5:16 | var ...; | | Test.kt:8:3:8:16 | var ...; | Test.kt:6:3:6:18 | var ...; | | Test.kt:8:3:8:16 | var ...; | Test.kt:7:3:7:16 | var ...; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:4:13:79:2 | { ... } | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:5:3:5:16 | var ...; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:6:3:6:18 | var ...; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:7:3:7:16 | var ...; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:8:3:8:16 | var ...; | -| Test.kt:11:3:16:3 | ... -> ... | Test.kt:11:3:16:3 | ; | | Test.kt:11:3:16:3 | ; | Test.kt:4:13:79:2 | { ... } | | Test.kt:11:3:16:3 | ; | Test.kt:5:3:5:16 | var ...; | | Test.kt:11:3:16:3 | ; | Test.kt:6:3:6:18 | var ...; | | Test.kt:11:3:16:3 | ; | Test.kt:7:3:7:16 | var ...; | | Test.kt:11:3:16:3 | ; | Test.kt:8:3:8:16 | var ...; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:4:13:79:2 | { ... } | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:5:3:5:16 | var ...; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:6:3:6:18 | var ...; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:7:3:7:16 | var ...; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:8:3:8:16 | var ...; | +| Test.kt:11:7:14:3 | ... -> ... | Test.kt:11:3:16:3 | ; | | Test.kt:12:4:12:4 | ; | Test.kt:11:14:14:3 | { ... } | | Test.kt:13:4:13:4 | ; | Test.kt:11:14:14:3 | { ... } | | Test.kt:13:4:13:4 | ; | Test.kt:12:4:12:4 | ; | -| Test.kt:14:10:16:3 | { ... } | Test.kt:11:3:16:3 | ... -> ... | -| Test.kt:15:4:15:4 | ; | Test.kt:11:3:16:3 | ... -> ... | +| Test.kt:14:10:16:3 | { ... } | Test.kt:14:10:16:3 | ... -> ... | +| Test.kt:15:4:15:4 | ; | Test.kt:14:10:16:3 | ... -> ... | | Test.kt:15:4:15:4 | ; | Test.kt:14:10:16:3 | { ... } | | Test.kt:18:3:18:3 | ; | Test.kt:4:13:79:2 | { ... } | | Test.kt:18:3:18:3 | ; | Test.kt:5:3:5:16 | var ...; | | Test.kt:18:3:18:3 | ; | Test.kt:6:3:6:18 | var ...; | | Test.kt:18:3:18:3 | ; | Test.kt:7:3:7:16 | var ...; | | Test.kt:18:3:18:3 | ; | Test.kt:8:3:8:16 | var ...; | -| Test.kt:18:3:18:3 | ; | Test.kt:11:3:16:3 | ... -> ... | -| Test.kt:18:3:18:3 | ; | Test.kt:11:3:16:3 | ... -> ... | | Test.kt:18:3:18:3 | ; | Test.kt:11:3:16:3 | ; | +| Test.kt:18:3:18:3 | ; | Test.kt:11:7:14:3 | ... -> ... | | Test.kt:18:3:18:3 | ; | Test.kt:11:14:14:3 | { ... } | | Test.kt:18:3:18:3 | ; | Test.kt:12:4:12:4 | ; | | Test.kt:18:3:18:3 | ; | Test.kt:13:4:13:4 | ; | +| Test.kt:18:3:18:3 | ; | Test.kt:14:10:16:3 | ... -> ... | | Test.kt:18:3:18:3 | ; | Test.kt:14:10:16:3 | { ... } | | Test.kt:18:3:18:3 | ; | Test.kt:15:4:15:4 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:4:13:79:2 | { ... } | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:5:3:5:16 | var ...; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:6:3:6:18 | var ...; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:7:3:7:16 | var ...; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:8:3:8:16 | var ...; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:11:3:16:3 | ... -> ... | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:11:3:16:3 | ... -> ... | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:11:3:16:3 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:11:14:14:3 | { ... } | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:12:4:12:4 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:13:4:13:4 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:14:10:16:3 | { ... } | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:15:4:15:4 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:18:3:18:3 | ; | -| Test.kt:21:3:24:9 | ... -> ... | Test.kt:21:3:24:9 | ; | | Test.kt:21:3:24:9 | ; | Test.kt:4:13:79:2 | { ... } | | Test.kt:21:3:24:9 | ; | Test.kt:5:3:5:16 | var ...; | | Test.kt:21:3:24:9 | ; | Test.kt:6:3:6:18 | var ...; | | Test.kt:21:3:24:9 | ; | Test.kt:7:3:7:16 | var ...; | | Test.kt:21:3:24:9 | ; | Test.kt:8:3:8:16 | var ...; | -| Test.kt:21:3:24:9 | ; | Test.kt:11:3:16:3 | ... -> ... | -| Test.kt:21:3:24:9 | ; | Test.kt:11:3:16:3 | ... -> ... | | Test.kt:21:3:24:9 | ; | Test.kt:11:3:16:3 | ; | +| Test.kt:21:3:24:9 | ; | Test.kt:11:7:14:3 | ... -> ... | | Test.kt:21:3:24:9 | ; | Test.kt:11:14:14:3 | { ... } | | Test.kt:21:3:24:9 | ; | Test.kt:12:4:12:4 | ; | | Test.kt:21:3:24:9 | ; | Test.kt:13:4:13:4 | ; | +| Test.kt:21:3:24:9 | ; | Test.kt:14:10:16:3 | ... -> ... | | Test.kt:21:3:24:9 | ; | Test.kt:14:10:16:3 | { ... } | | Test.kt:21:3:24:9 | ; | Test.kt:15:4:15:4 | ; | | Test.kt:21:3:24:9 | ; | Test.kt:18:3:18:3 | ; | -| Test.kt:24:4:24:9 | return ... | Test.kt:21:3:24:9 | ... -> ... | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:4:13:79:2 | { ... } | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:5:3:5:16 | var ...; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:6:3:6:18 | var ...; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:7:3:7:16 | var ...; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:8:3:8:16 | var ...; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:11:3:16:3 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:11:7:14:3 | ... -> ... | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:11:14:14:3 | { ... } | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:12:4:12:4 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:13:4:13:4 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:14:10:16:3 | ... -> ... | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:14:10:16:3 | { ... } | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:15:4:15:4 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:18:3:18:3 | ; | +| Test.kt:21:6:22:9 | ... -> ... | Test.kt:21:3:24:9 | ; | +| Test.kt:24:4:24:9 | return ... | Test.kt:24:4:24:9 | ... -> ... | | Test.kt:27:3:27:3 | ; | Test.kt:22:4:22:4 | ; | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:22:4:22:4 | ; | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:27:3:27:3 | ; | -| Test.kt:30:3:33:3 | ... -> ... | Test.kt:30:3:33:3 | ; | | Test.kt:30:3:33:3 | ; | Test.kt:22:4:22:4 | ; | | Test.kt:30:3:33:3 | ; | Test.kt:27:3:27:3 | ; | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:22:4:22:4 | ; | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:27:3:27:3 | ; | +| Test.kt:30:7:33:3 | ... -> ... | Test.kt:30:3:33:3 | ; | | Test.kt:31:4:31:4 | ; | Test.kt:30:15:33:3 | { ... } | | Test.kt:32:4:32:4 | ; | Test.kt:30:15:33:3 | { ... } | | Test.kt:32:4:32:4 | ; | Test.kt:31:4:31:4 | ; | | Test.kt:35:3:35:3 | ; | Test.kt:22:4:22:4 | ; | | Test.kt:35:3:35:3 | ; | Test.kt:27:3:27:3 | ; | -| Test.kt:35:3:35:3 | ; | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:35:3:35:3 | ; | Test.kt:30:3:33:3 | ; | +| Test.kt:35:3:35:3 | ; | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:35:3:35:3 | ; | Test.kt:30:15:33:3 | { ... } | | Test.kt:35:3:35:3 | ; | Test.kt:31:4:31:4 | ; | | Test.kt:35:3:35:3 | ; | Test.kt:32:4:32:4 | ; | | Test.kt:38:3:41:3 | while (...) | Test.kt:22:4:22:4 | ; | | Test.kt:38:3:41:3 | while (...) | Test.kt:27:3:27:3 | ; | -| Test.kt:38:3:41:3 | while (...) | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:38:3:41:3 | while (...) | Test.kt:30:3:33:3 | ; | +| Test.kt:38:3:41:3 | while (...) | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:38:3:41:3 | while (...) | Test.kt:30:15:33:3 | { ... } | | Test.kt:38:3:41:3 | while (...) | Test.kt:31:4:31:4 | ; | | Test.kt:38:3:41:3 | while (...) | Test.kt:32:4:32:4 | ; | @@ -118,8 +118,8 @@ | Test.kt:40:4:40:6 | { ... } | Test.kt:40:4:40:6 | ; | | Test.kt:43:3:43:3 | ; | Test.kt:22:4:22:4 | ; | | Test.kt:43:3:43:3 | ; | Test.kt:27:3:27:3 | ; | -| Test.kt:43:3:43:3 | ; | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:43:3:43:3 | ; | Test.kt:30:3:33:3 | ; | +| Test.kt:43:3:43:3 | ; | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:43:3:43:3 | ; | Test.kt:30:15:33:3 | { ... } | | Test.kt:43:3:43:3 | ; | Test.kt:31:4:31:4 | ; | | Test.kt:43:3:43:3 | ; | Test.kt:32:4:32:4 | ; | @@ -134,8 +134,8 @@ | Test.kt:43:3:43:3 | ; | Test.kt:40:4:40:6 | { ... } | | Test.kt:73:3:73:3 | ; | Test.kt:22:4:22:4 | ; | | Test.kt:73:3:73:3 | ; | Test.kt:27:3:27:3 | ; | -| Test.kt:73:3:73:3 | ; | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:73:3:73:3 | ; | Test.kt:30:3:33:3 | ; | +| Test.kt:73:3:73:3 | ; | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:73:3:73:3 | ; | Test.kt:30:15:33:3 | { ... } | | Test.kt:73:3:73:3 | ; | Test.kt:31:4:31:4 | ; | | Test.kt:73:3:73:3 | ; | Test.kt:32:4:32:4 | ; | @@ -151,8 +151,8 @@ | Test.kt:73:3:73:3 | ; | Test.kt:43:3:43:3 | ; | | Test.kt:77:3:77:3 | ; | Test.kt:22:4:22:4 | ; | | Test.kt:77:3:77:3 | ; | Test.kt:27:3:27:3 | ; | -| Test.kt:77:3:77:3 | ; | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:77:3:77:3 | ; | Test.kt:30:3:33:3 | ; | +| Test.kt:77:3:77:3 | ; | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:77:3:77:3 | ; | Test.kt:30:15:33:3 | { ... } | | Test.kt:77:3:77:3 | ; | Test.kt:31:4:31:4 | ; | | Test.kt:77:3:77:3 | ; | Test.kt:32:4:32:4 | ; | @@ -169,8 +169,8 @@ | Test.kt:77:3:77:3 | ; | Test.kt:73:3:73:3 | ; | | Test.kt:78:3:78:8 | return ... | Test.kt:22:4:22:4 | ; | | Test.kt:78:3:78:8 | return ... | Test.kt:27:3:27:3 | ; | -| Test.kt:78:3:78:8 | return ... | Test.kt:30:3:33:3 | ... -> ... | | Test.kt:78:3:78:8 | return ... | Test.kt:30:3:33:3 | ; | +| Test.kt:78:3:78:8 | return ... | Test.kt:30:7:33:3 | ... -> ... | | Test.kt:78:3:78:8 | return ... | Test.kt:30:15:33:3 | { ... } | | Test.kt:78:3:78:8 | return ... | Test.kt:31:4:31:4 | ; | | Test.kt:78:3:78:8 | return ... | Test.kt:32:4:32:4 | ; | @@ -204,22 +204,22 @@ | 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 | ; | | Test.kt:101:5:103:5 | ; | Test.kt:100:25:110:1 | { ... } | +| Test.kt:101:9:103:5 | ... -> ... | Test.kt:100:25:110:1 | { ... } | +| Test.kt:101:9:103:5 | ... -> ... | Test.kt:101:5:103:5 | ; | | Test.kt:102:9:102:25 | throw ... | Test.kt:101:33:103:5 | { ... } | | Test.kt:105:5:109:5 | ; | Test.kt:100:25:110:1 | { ... } | -| Test.kt:105:5:109:5 | ; | Test.kt:101:5:103:5 | ... -> ... | | Test.kt:105:5:109:5 | ; | Test.kt:101:5:103:5 | ; | +| Test.kt:105:5:109:5 | ; | Test.kt:101:9:103:5 | ... -> ... | | Test.kt:105:9:107:5 | ... -> ... | Test.kt:100:25:110:1 | { ... } | -| Test.kt:105:9:107:5 | ... -> ... | Test.kt:101:5:103:5 | ... -> ... | | Test.kt:105:9:107:5 | ... -> ... | Test.kt:101:5:103:5 | ; | +| Test.kt:105:9:107:5 | ... -> ... | Test.kt:101:9:103:5 | ... -> ... | | Test.kt:105:9:107:5 | ... -> ... | Test.kt:105:5:109:5 | ; | | Test.kt:106:9:106:29 | ; | Test.kt:105:20:107:5 | { ... } | | Test.kt:108:9:108:29 | ; | Test.kt:107:27:109:5 | { ... } | -| Test.kt:113:5:115:5 | ... -> ... | Test.kt:112:32:116:1 | { ... } | -| Test.kt:113:5:115:5 | ... -> ... | Test.kt:113:5:115:5 | ; | | Test.kt:113:5:115:5 | ; | Test.kt:112:32:116:1 | { ... } | +| Test.kt:113:9:115:5 | ... -> ... | Test.kt:112:32:116:1 | { ... } | +| Test.kt:113:9:115:5 | ... -> ... | Test.kt:113:5:115:5 | ; | | Test.kt:119:2:123:12 | ; | Test.kt:118:37:124:1 | { ... } | | Test.kt:120:3:123:10 | ... -> ... | Test.kt:118:37:124:1 | { ... } | | Test.kt:120:3:123:10 | ... -> ... | Test.kt:119:2:123:12 | ; | diff --git a/java/ql/test-kotlin1/library-tests/controlflow/dominance/dominator.expected b/java/ql/test-kotlin1/library-tests/controlflow/dominance/dominator.expected index 3288b521887..8451c46f83f 100644 --- a/java/ql/test-kotlin1/library-tests/controlflow/dominance/dominator.expected +++ b/java/ql/test-kotlin1/library-tests/controlflow/dominance/dominator.expected @@ -1,9 +1,9 @@ -| Test.kt:2:43:79:2 | { ... } | Test.kt:11:3:16:3 | ... -> ... | | Test.kt:2:43:79:2 | { ... } | Test.kt:11:14:14:3 | { ... } | +| Test.kt:2:43:79:2 | { ... } | Test.kt:14:10:16:3 | ... -> ... | | Test.kt:2:43:79:2 | { ... } | Test.kt:18:3:18:3 | ; | | Test.kt:18:3:18:3 | ; | Test.kt:2:2:79:2 | Normal Exit | -| Test.kt:18:3:18:3 | ; | Test.kt:21:3:24:11 | ... -> ... | | Test.kt:18:3:18:3 | ; | Test.kt:22:4:22:4 | ; | +| Test.kt:18:3:18:3 | ; | Test.kt:24:4:24:11 | ... -> ... | | Test.kt:22:4:22:4 | ; | Test.kt:30:7:30:12 | After ... (value equals) ... [false] | | Test.kt:22:4:22:4 | ; | Test.kt:30:15:33:3 | { ... } | | Test.kt:22:4:22:4 | ; | Test.kt:35:3:35:3 | ; | diff --git a/java/ql/test-kotlin1/library-tests/exprs/PrintAst.expected b/java/ql/test-kotlin1/library-tests/exprs/PrintAst.expected index dbbfd1d44e1..9d7969d45a8 100644 --- a/java/ql/test-kotlin1/library-tests/exprs/PrintAst.expected +++ b/java/ql/test-kotlin1/library-tests/exprs/PrintAst.expected @@ -6080,7 +6080,7 @@ samConversion.kt: # 9| -3: [TypeAccess] Function1 # 9| 0: [TypeAccess] Integer # 9| 1: [TypeAccess] Boolean -# 9| 1: [WhenBranch] ... -> ... +# 11| 1: [WhenBranch] ... -> ... # 9| 0: [BooleanLiteral] true # 11| 1: [ExprStmt] ; # 11| 0: [LambdaExpr] ...->... diff --git a/java/ql/test-kotlin1/library-tests/stmts/stmts.expected b/java/ql/test-kotlin1/library-tests/stmts/stmts.expected index f69fa888061..c818b6b711c 100644 --- a/java/ql/test-kotlin1/library-tests/stmts/stmts.expected +++ b/java/ql/test-kotlin1/library-tests/stmts/stmts.expected @@ -18,17 +18,17 @@ | stmts.kt:13:9:13:16 | return ... | ReturnStmt | | stmts.kt:15:5:15:13 | var ...; | LocalVariableDeclStmt | | stmts.kt:17:5:17:58 | var ...; | LocalVariableDeclStmt | -| stmts.kt:17:26:17:58 | ... -> ... | WhenBranch | -| stmts.kt:17:26:17:58 | ... -> ... | WhenBranch | +| stmts.kt:17:29:17:43 | ... -> ... | WhenBranch | | stmts.kt:17:35:17:43 | { ... } | BlockStmt | | stmts.kt:17:37:17:37 | ; | ExprStmt | +| stmts.kt:17:50:17:58 | ... -> ... | WhenBranch | | stmts.kt:17:50:17:58 | { ... } | BlockStmt | | stmts.kt:17:52:17:52 | ; | ExprStmt | | stmts.kt:18:5:18:56 | var ...; | LocalVariableDeclStmt | -| stmts.kt:18:26:18:56 | ... -> ... | WhenBranch | -| stmts.kt:18:26:18:56 | ... -> ... | WhenBranch | +| stmts.kt:18:29:18:41 | ... -> ... | WhenBranch | | stmts.kt:18:37:18:37 | ; | ExprStmt | | stmts.kt:18:52:18:52 | ; | ExprStmt | +| stmts.kt:18:52:18:56 | ... -> ... | WhenBranch | | stmts.kt:19:5:19:16 | return ... | ReturnStmt | | stmts.kt:22:27:44:1 | { ... } | BlockStmt | | stmts.kt:23:11:27:5 |