Fix AST representation of WhenExpr and WhenBranch

This commit is contained in:
Tony Torralba
2022-03-08 12:17:44 +01:00
committed by Ian Lynagh
parent 4b22e1a378
commit 64531dd717
8 changed files with 199 additions and 82 deletions

View File

@@ -2413,7 +2413,7 @@ open class KotlinFileExtractor(
val bLocId = tw.getLocation(b)
tw.writeStmts_whenbranch(bId, id, i, callable)
tw.writeHasLocation(bId, bLocId)
extractExpressionExpr(b.condition, callable, bId, 0, exprParent.enclosingStmt)
extractExpressionExpr(b.condition, callable, bId, 0, bId)
extractExpressionStmt(b.result, callable, bId, 1)
if(b is IrElseBranch) {
tw.writeWhen_branch_else(bId)

View File

@@ -3,7 +3,6 @@ import java
Element enclosingStmtOrOther(ExprParent ep) {
result = ep.(Stmt) or
result = enclosingStmtOrOther(ep.(Expr).getParent()) or
result = enclosingStmtOrOther(ep.(WhenBranch).getWhenExpr()) or
result = ep.(Callable) or
result = enclosingStmtOrOther(ep.(Field).getDeclaration()) or
result = ep.(FieldDeclaration) or
@@ -14,47 +13,46 @@ Element enclosingStmtOrOther(ExprParent ep) {
result = ep.(TypeVariable)
}
predicate multipleSpecified(Expr e) {
e.getEnclosingStmt() != e.getEnclosingStmt()
}
predicate multipleSpecified(Expr e) { e.getEnclosingStmt() != e.getEnclosingStmt() }
predicate multipleInferred(Expr e) {
enclosingStmtOrOther(e) != enclosingStmtOrOther(e)
}
predicate multipleInferred(Expr e) { enclosingStmtOrOther(e) != enclosingStmtOrOther(e) }
predicate noneInferred(Expr e) {
not exists(enclosingStmtOrOther(e))
}
predicate noneInferred(Expr e) { not exists(enclosingStmtOrOther(e)) }
predicate difference(Expr e) {
e.getEnclosingStmt() != enclosingStmtOrOther(e)
e.getEnclosingStmt() != enclosingStmtOrOther(e) and
// Java #167
and not enclosingStmtOrOther(e) instanceof LocalVariableDeclStmt
not enclosingStmtOrOther(e) instanceof LocalVariableDeclStmt
}
predicate notSpecified(Expr e) {
enclosingStmtOrOther(e) instanceof Stmt and not exists(e.getEnclosingStmt())
enclosingStmtOrOther(e) instanceof Stmt and
not exists(e.getEnclosingStmt()) and
// Java #168
and not (e instanceof Annotation and e.getFile().isJavaSourceFile())
not (e instanceof Annotation and e.getFile().isJavaSourceFile()) and
// TODO: Kotlin bug
and not (e instanceof ArrayCreationExpr and e.getFile().isKotlinSourceFile())
not (e instanceof ArrayCreationExpr and e.getFile().isKotlinSourceFile()) and
// TODO: Kotlin bug
and not (e instanceof VarAccess and e.getFile().isKotlinSourceFile())
not (e instanceof VarAccess and e.getFile().isKotlinSourceFile()) and
// TODO: Kotlin bug
and not (e instanceof TypeAccess and e.getFile().isKotlinSourceFile())
not (e instanceof TypeAccess and e.getFile().isKotlinSourceFile())
}
predicate problem(Expr e, string s) {
multipleSpecified(e) and s = "multiple specified" or
multipleInferred(e) and s = "multiple inferred" or
noneInferred(e) and s = "none inferred" or
difference(e) and s = "difference" or
multipleSpecified(e) and s = "multiple specified"
or
multipleInferred(e) and s = "multiple inferred"
or
noneInferred(e) and s = "none inferred"
or
difference(e) and s = "difference"
or
notSpecified(e) and s = "not specified"
}
from Expr e, string s
where problem(e, s)
and // TODO: bug in external deps?
e.getCompilationUnit().fromSource()
where
problem(e, s) and
// TODO: bug in external deps?
e.getCompilationUnit().fromSource()
select e, s, e.getPrimaryQlClasses()

View File

@@ -117,7 +117,6 @@ private predicate locationSortKeys(Element ast, string file, int line, int colum
private newtype TPrintAstNode =
TElementNode(Element el) { shouldPrint(el, _) } or
TForInitNode(ForStmt fs) { shouldPrint(fs, _) and exists(fs.getAnInit()) } or
TWhenBranchNode(WhenBranch wb) { shouldPrint(wb.getWhenExpr(), _) } or
TLocalVarDeclNode(LocalVariableDeclExpr lvde) {
shouldPrint(lvde, _) and lvde.getParent() instanceof SingleLocalVarDeclParent
} or
@@ -357,18 +356,6 @@ final class ForStmtNode extends ExprStmtNode {
}
}
/**
* A node representing a `WhenExpr`.
*/
final class WhenExprNode extends ExprStmtNode {
WhenExprNode() { element instanceof WhenExpr }
override PrintAstNode getChild(int childIndex) {
childIndex >= 0 and
result.(WhenBranchNode).getWhenBranch() = element.(WhenExpr).getBranch(childIndex)
}
}
/**
* An element that can be the parent of up to one `LocalVariableDeclExpr` for which we want
* to use a synthetic node to hold the variable declaration and its `TypeAccess`.
@@ -585,30 +572,6 @@ final class ForInitNode extends PrintAstNode, TForInitNode {
ForStmt getForStmt() { result = fs }
}
/**
* A node representing the synthetic node of a `when` expression branch.
*/
final class WhenBranchNode extends PrintAstNode, TWhenBranchNode {
WhenBranch wb;
WhenBranchNode() { this = TWhenBranchNode(wb) }
override string toString() { result = "(branch)" }
override ElementNode getChild(int childIndex) {
childIndex = 0 and
result.getElement().(Expr).isNthChildOf(wb, childIndex)
or
childIndex = 1 and
result.getElement().(Stmt).isNthChildOf(wb, childIndex)
}
/**
* Gets the underlying `WhenBranch`.
*/
WhenBranch getWhenBranch() { result = wb }
}
/**
* A synthetic node holding a `LocalVariableDeclExpr` and its type access.
*/

View File

@@ -150,7 +150,7 @@ classes.kt:
# 64| 5: [BlockStmt] { ... }
# 65| 0: [ExprStmt] <Expr>;
# 65| 0: [WhenExpr] when ...
#-----| 0: (branch)
# 65| 0: [WhenBranch] ... -> ...
# 65| 0: [VarAccess] b
# 66| 1: [ReturnStmt] return ...
# 66| 0: [StmtExpr] <Stmt>
@@ -163,7 +163,7 @@ classes.kt:
# 66| 1: [ExprStmt] <Expr>;
# 66| 0: [ClassInstanceExpr] new (...)
# 66| -3: [TypeAccess] Object
#-----| 1: (branch)
# 65| 1: [WhenBranch] ... -> ...
# 65| 0: [BooleanLiteral] true
# 68| 1: [ReturnStmt] return ...
# 68| 0: [StmtExpr] <Stmt>

View File

@@ -3,6 +3,8 @@
| 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 | <Expr>; |
| Test.kt:4:13:79:2 | { ... } | Test.kt:11:14:14:3 | { ... } |
| Test.kt:4:13:79:2 | { ... } | Test.kt:12:4:12:4 | <Expr>; |
@@ -10,10 +12,13 @@
| Test.kt:4:13:79:2 | { ... } | Test.kt:14:10:16:3 | { ... } |
| Test.kt:4:13:79:2 | { ... } | Test.kt:15:4:15:4 | <Expr>; |
| Test.kt:4:13:79:2 | { ... } | Test.kt:18:3:18:3 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:4:13:79:2 | { ... } | Test.kt:22:4:22:4 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:4:13:79:2 | { ... } | Test.kt:30:3:33:3 | ... -> ... |
| Test.kt:4:13:79:2 | { ... } | Test.kt:30:3:33:3 | <Expr>; |
| Test.kt:4:13:79:2 | { ... } | Test.kt:30:15:33:3 | { ... } |
| Test.kt:4:13:79:2 | { ... } | Test.kt:31:4:31:4 | <Expr>; |
@@ -34,6 +39,8 @@
| 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 | <Expr>; |
| 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 | <Expr>; |
@@ -41,10 +48,13 @@
| 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 | <Expr>; |
| Test.kt:5:3:5:16 | var ...; | Test.kt:18:3:18:3 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:5:3:5:16 | var ...; | Test.kt:22:4:22:4 | <Expr>; |
| 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 | <Expr>; |
| 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 | <Expr>; |
| 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 | <Expr>; |
@@ -64,6 +74,8 @@
| 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 | <Expr>; |
| 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 | <Expr>; |
@@ -71,10 +83,13 @@
| 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 | <Expr>; |
| Test.kt:6:3:6:18 | var ...; | Test.kt:18:3:18:3 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:6:3:6:18 | var ...; | Test.kt:22:4:22:4 | <Expr>; |
| 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 | <Expr>; |
| 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 | <Expr>; |
| 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 | <Expr>; |
@@ -93,6 +108,8 @@
| Test.kt:6:3:6:18 | var ...; | Test.kt:77:3:77:3 | <Expr>; |
| 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 | <Expr>; |
| 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 | <Expr>; |
@@ -100,10 +117,13 @@
| 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 | <Expr>; |
| Test.kt:7:3:7:16 | var ...; | Test.kt:18:3:18:3 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:7:3:7:16 | var ...; | Test.kt:22:4:22:4 | <Expr>; |
| 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 | <Expr>; |
| 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 | <Expr>; |
| 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 | <Expr>; |
@@ -121,6 +141,8 @@
| Test.kt:7:3:7:16 | var ...; | Test.kt:73:3:73:3 | <Expr>; |
| Test.kt:7:3:7:16 | var ...; | Test.kt:77:3:77:3 | <Expr>; |
| 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 | <Expr>; |
| 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 | <Expr>; |
@@ -128,10 +150,13 @@
| 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 | <Expr>; |
| Test.kt:8:3:8:16 | var ...; | Test.kt:18:3:18:3 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:8:3:8:16 | var ...; | Test.kt:22:4:22:4 | <Expr>; |
| 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 | <Expr>; |
| 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 | <Expr>; |
| 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 | <Expr>; |
@@ -149,16 +174,54 @@
| Test.kt:8:3:8:16 | var ...; | Test.kt:73:3:73:3 | <Expr>; |
| Test.kt:8:3:8:16 | var ...; | Test.kt:77:3:77:3 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:13:4:13:4 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:15:4:15:4 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:18:3:18:3 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:22:4:22:4 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:30:3:33:3 | ... -> ... |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:30:3:33:3 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:30:15:33:3 | { ... } |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:31:4:31:4 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:32:4:32:4 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:35:3:35:3 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:40:4:40:4 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:40:4:40:4 | var ...; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:40:4:40:6 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:40:4:40:6 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:40:4:40:6 | { ... } |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:43:3:43:3 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:73:3:73:3 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:77:3:77:3 | <Expr>; |
| Test.kt:11:3:16:3 | ... -> ... | Test.kt:78:3:78:8 | return ... |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:11:3:16:3 | ... -> ... |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:11:3:16:3 | ... -> ... |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:11:14:14:3 | { ... } |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:12:4:12:4 | <Expr>; |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:13:4:13:4 | <Expr>; |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:14:10:16:3 | { ... } |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:15:4:15:4 | <Expr>; |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:18:3:18:3 | <Expr>; |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:21:3:24:9 | ... -> ... |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:21:3:24:9 | ... -> ... |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:21:3:24:9 | <Expr>; |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:22:4:22:4 | <Expr>; |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:24:4:24:9 | return ... |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:27:3:27:3 | <Expr>; |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:30:3:33:3 | ... -> ... |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:30:3:33:3 | <Expr>; |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:31:4:31:4 | <Expr>; |
@@ -180,10 +243,13 @@
| Test.kt:11:14:14:3 | { ... } | Test.kt:13:4:13:4 | <Expr>; |
| Test.kt:12:4:12:4 | <Expr>; | Test.kt:13:4:13:4 | <Expr>; |
| Test.kt:14:10:16:3 | { ... } | Test.kt:15:4:15:4 | <Expr>; |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:21:3:24:9 | ... -> ... |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:21:3:24:9 | ... -> ... |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:21:3:24:9 | <Expr>; |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:22:4:22:4 | <Expr>; |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:24:4:24:9 | return ... |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:27:3:27:3 | <Expr>; |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:30:3:33:3 | ... -> ... |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:30:3:33:3 | <Expr>; |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:31:4:31:4 | <Expr>; |
@@ -201,9 +267,35 @@
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:73:3:73:3 | <Expr>; |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:77:3:77:3 | <Expr>; |
| Test.kt:18:3:18:3 | <Expr>; | 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 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:30:3:33:3 | ... -> ... |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:30:3:33:3 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:30:15:33:3 | { ... } |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:31:4:31:4 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:32:4:32:4 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:35:3:35:3 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:40:4:40:4 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:40:4:40:4 | var ...; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:40:4:40:6 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:40:4:40:6 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:40:4:40:6 | { ... } |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:43:3:43:3 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:73:3:73:3 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:77:3:77:3 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:78:3:78:8 | return ... |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:21:3:24:9 | ... -> ... |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:21:3:24:9 | ... -> ... |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:22:4:22:4 | <Expr>; |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:24:4:24:9 | return ... |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:27:3:27:3 | <Expr>; |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:30:3:33:3 | ... -> ... |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:30:3:33:3 | <Expr>; |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:31:4:31:4 | <Expr>; |
@@ -222,6 +314,7 @@
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:77:3:77:3 | <Expr>; |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:78:3:78:8 | return ... |
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:27:3:27:3 | <Expr>; |
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:30:3:33:3 | ... -> ... |
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:30:3:33:3 | <Expr>; |
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:31:4:31:4 | <Expr>; |
@@ -239,6 +332,7 @@
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:73:3:73:3 | <Expr>; |
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:77:3:77:3 | <Expr>; |
| Test.kt:22:4:22:4 | <Expr>; | Test.kt:78:3:78:8 | return ... |
| Test.kt:27:3:27:3 | <Expr>; | Test.kt:30:3:33:3 | ... -> ... |
| Test.kt:27:3:27:3 | <Expr>; | Test.kt:30:3:33:3 | <Expr>; |
| Test.kt:27:3:27:3 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
| Test.kt:27:3:27:3 | <Expr>; | Test.kt:31:4:31:4 | <Expr>; |
@@ -256,6 +350,23 @@
| Test.kt:27:3:27:3 | <Expr>; | Test.kt:73:3:73:3 | <Expr>; |
| Test.kt:27:3:27:3 | <Expr>; | Test.kt:77:3:77:3 | <Expr>; |
| Test.kt:27:3:27:3 | <Expr>; | 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 | <Expr>; |
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:32:4:32:4 | <Expr>; |
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:35:3:35:3 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:40:4:40:4 | <Expr>; |
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:40:4:40:4 | var ...; |
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:40:4:40:6 | <Expr>; |
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:40:4:40:6 | <Expr>; |
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:40:4:40:6 | { ... } |
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:43:3:43:3 | <Expr>; |
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:73:3:73:3 | <Expr>; |
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:77:3:77:3 | <Expr>; |
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:78:3:78:8 | return ... |
| Test.kt:30:3:33:3 | <Expr>; | Test.kt:30:3:33:3 | ... -> ... |
| Test.kt:30:3:33:3 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
| Test.kt:30:3:33:3 | <Expr>; | Test.kt:31:4:31:4 | <Expr>; |
| Test.kt:30:3:33:3 | <Expr>; | Test.kt:32:4:32:4 | <Expr>; |

View File

@@ -9,6 +9,12 @@
| 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 | <Expr>; |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:4:13:79:2 | { ... } |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:5:3:5:16 | var ...; |
| Test.kt:11:3:16:3 | <Expr>; | Test.kt:6:3:6:18 | var ...; |
@@ -17,23 +23,44 @@
| Test.kt:12:4:12:4 | <Expr>; | Test.kt:11:14:14:3 | { ... } |
| Test.kt:13:4:13:4 | <Expr>; | Test.kt:11:14:14:3 | { ... } |
| Test.kt:13:4:13:4 | <Expr>; | Test.kt:12:4:12:4 | <Expr>; |
| Test.kt:14:10:16:3 | { ... } | Test.kt:11:3:16:3 | ... -> ... |
| Test.kt:15:4:15:4 | <Expr>; | Test.kt:11:3:16:3 | ... -> ... |
| Test.kt:15:4:15:4 | <Expr>; | Test.kt:14:10:16:3 | { ... } |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:4:13:79:2 | { ... } |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:5:3:5:16 | var ...; |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:6:3:6:18 | var ...; |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:7:3:7:16 | var ...; |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:8:3:8:16 | var ...; |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:11:3:16:3 | ... -> ... |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:11:3:16:3 | ... -> ... |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:11:3:16:3 | <Expr>; |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:11:14:14:3 | { ... } |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:12:4:12:4 | <Expr>; |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:13:4:13:4 | <Expr>; |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:14:10:16:3 | { ... } |
| Test.kt:18:3:18:3 | <Expr>; | Test.kt:15:4:15:4 | <Expr>; |
| 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 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:11:14:14:3 | { ... } |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:12:4:12:4 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:13:4:13:4 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:14:10:16:3 | { ... } |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:15:4:15:4 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:18:3:18:3 | <Expr>; |
| Test.kt:21:3:24:9 | ... -> ... | Test.kt:21:3:24:9 | <Expr>; |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:4:13:79:2 | { ... } |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:5:3:5:16 | var ...; |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:6:3:6:18 | var ...; |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:7:3:7:16 | var ...; |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:8:3:8:16 | var ...; |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:11:3:16:3 | ... -> ... |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:11:3:16:3 | ... -> ... |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:11:3:16:3 | <Expr>; |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:11:14:14:3 | { ... } |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:12:4:12:4 | <Expr>; |
@@ -41,7 +68,11 @@
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:14:10:16:3 | { ... } |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:15:4:15:4 | <Expr>; |
| Test.kt:21:3:24:9 | <Expr>; | Test.kt:18:3:18:3 | <Expr>; |
| Test.kt:24:4:24:9 | return ... | Test.kt:21:3:24:9 | ... -> ... |
| Test.kt:27:3:27:3 | <Expr>; | Test.kt:22:4:22:4 | <Expr>; |
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:22:4:22:4 | <Expr>; |
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:27:3:27:3 | <Expr>; |
| Test.kt:30:3:33:3 | ... -> ... | Test.kt:30:3:33:3 | <Expr>; |
| Test.kt:30:3:33:3 | <Expr>; | Test.kt:22:4:22:4 | <Expr>; |
| Test.kt:30:3:33:3 | <Expr>; | Test.kt:27:3:27:3 | <Expr>; |
| Test.kt:31:4:31:4 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
@@ -49,12 +80,14 @@
| Test.kt:32:4:32:4 | <Expr>; | Test.kt:31:4:31:4 | <Expr>; |
| Test.kt:35:3:35:3 | <Expr>; | Test.kt:22:4:22:4 | <Expr>; |
| Test.kt:35:3:35:3 | <Expr>; | Test.kt:27:3:27:3 | <Expr>; |
| Test.kt:35:3:35:3 | <Expr>; | Test.kt:30:3:33:3 | ... -> ... |
| Test.kt:35:3:35:3 | <Expr>; | Test.kt:30:3:33:3 | <Expr>; |
| Test.kt:35:3:35:3 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
| Test.kt:35:3:35:3 | <Expr>; | Test.kt:31:4:31:4 | <Expr>; |
| Test.kt:35:3:35:3 | <Expr>; | Test.kt:32:4:32:4 | <Expr>; |
| Test.kt:38:3:41:3 | while (...) | Test.kt:22:4:22:4 | <Expr>; |
| Test.kt:38:3:41:3 | while (...) | Test.kt:27:3:27:3 | <Expr>; |
| 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 | <Expr>; |
| 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 | <Expr>; |
@@ -83,6 +116,7 @@
| Test.kt:40:4:40:6 | { ... } | Test.kt:40:4:40:6 | <Expr>; |
| Test.kt:43:3:43:3 | <Expr>; | Test.kt:22:4:22:4 | <Expr>; |
| Test.kt:43:3:43:3 | <Expr>; | Test.kt:27:3:27:3 | <Expr>; |
| Test.kt:43:3:43:3 | <Expr>; | Test.kt:30:3:33:3 | ... -> ... |
| Test.kt:43:3:43:3 | <Expr>; | Test.kt:30:3:33:3 | <Expr>; |
| Test.kt:43:3:43:3 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
| Test.kt:43:3:43:3 | <Expr>; | Test.kt:31:4:31:4 | <Expr>; |
@@ -98,6 +132,7 @@
| Test.kt:43:3:43:3 | <Expr>; | Test.kt:40:4:40:6 | { ... } |
| Test.kt:73:3:73:3 | <Expr>; | Test.kt:22:4:22:4 | <Expr>; |
| Test.kt:73:3:73:3 | <Expr>; | Test.kt:27:3:27:3 | <Expr>; |
| Test.kt:73:3:73:3 | <Expr>; | Test.kt:30:3:33:3 | ... -> ... |
| Test.kt:73:3:73:3 | <Expr>; | Test.kt:30:3:33:3 | <Expr>; |
| Test.kt:73:3:73:3 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
| Test.kt:73:3:73:3 | <Expr>; | Test.kt:31:4:31:4 | <Expr>; |
@@ -114,6 +149,7 @@
| Test.kt:73:3:73:3 | <Expr>; | Test.kt:43:3:43:3 | <Expr>; |
| Test.kt:77:3:77:3 | <Expr>; | Test.kt:22:4:22:4 | <Expr>; |
| Test.kt:77:3:77:3 | <Expr>; | Test.kt:27:3:27:3 | <Expr>; |
| Test.kt:77:3:77:3 | <Expr>; | Test.kt:30:3:33:3 | ... -> ... |
| Test.kt:77:3:77:3 | <Expr>; | Test.kt:30:3:33:3 | <Expr>; |
| Test.kt:77:3:77:3 | <Expr>; | Test.kt:30:15:33:3 | { ... } |
| Test.kt:77:3:77:3 | <Expr>; | Test.kt:31:4:31:4 | <Expr>; |
@@ -131,6 +167,7 @@
| Test.kt:77:3:77:3 | <Expr>; | Test.kt:73:3:73:3 | <Expr>; |
| Test.kt:78:3:78:8 | return ... | Test.kt:22:4:22:4 | <Expr>; |
| Test.kt:78:3:78:8 | return ... | Test.kt:27:3:27:3 | <Expr>; |
| 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 | <Expr>; |
| 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 | <Expr>; |

View File

@@ -757,22 +757,22 @@ exprs.kt:
# 113| 96: [LocalVariableDeclStmt] var ...;
# 113| 1: [LocalVariableDeclExpr] b3
# 113| 0: [WhenExpr] when ...
#-----| 0: (branch)
# 113| 0: [WhenBranch] ... -> ...
# 113| 0: [VarAccess] b1
# 113| 1: [ExprStmt] <Expr>;
# 113| 0: [VarAccess] b2
#-----| 1: (branch)
# 113| 1: [WhenBranch] ... -> ...
# 113| 0: [BooleanLiteral] true
# 113| 1: [ExprStmt] <Expr>;
# 113| 0: [BooleanLiteral] false
# 114| 97: [LocalVariableDeclStmt] var ...;
# 114| 1: [LocalVariableDeclExpr] b4
# 114| 0: [WhenExpr] when ...
#-----| 0: (branch)
# 114| 0: [WhenBranch] ... -> ...
# 114| 0: [VarAccess] b1
# 114| 1: [ExprStmt] <Expr>;
# 114| 0: [BooleanLiteral] true
#-----| 1: (branch)
# 114| 1: [WhenBranch] ... -> ...
# 114| 0: [BooleanLiteral] true
# 114| 1: [ExprStmt] <Expr>;
# 114| 0: [VarAccess] b2
@@ -878,7 +878,7 @@ exprs.kt:
# 150| 5: [BlockStmt] { ... }
# 151| 0: [ExprStmt] <Expr>;
# 151| 0: [WhenExpr] when ...
#-----| 0: (branch)
# 151| 0: [WhenBranch] ... -> ...
# 151| 0: [InstanceOfExpr] ...instanceof...
# 151| 0: [VarAccess] x
# 151| 1: [TypeAccess] Subclass1
@@ -891,7 +891,7 @@ exprs.kt:
# 154| 1: [LocalVariableDeclStmt] var ...;
# 154| 1: [LocalVariableDeclExpr] y1
# 154| 0: [WhenExpr] when ...
#-----| 0: (branch)
# 154| 0: [WhenBranch] ... -> ...
# 154| 0: [InstanceOfExpr] ...instanceof...
# 154| 0: [VarAccess] x
# 154| 1: [TypeAccess] Subclass1
@@ -902,7 +902,7 @@ exprs.kt:
# 154| 0: [BlockStmt] { ... }
# 154| 0: [ExprStmt] <Expr>;
# 154| 0: [VarAccess] x
#-----| 1: (branch)
# 154| 1: [WhenBranch] ... -> ...
# 154| 0: [BooleanLiteral] true
# 154| 1: [BlockStmt] { ... }
# 154| 0: [ExprStmt] <Expr>;
@@ -912,7 +912,7 @@ exprs.kt:
# 155| 0: [IntegerLiteral] 1
# 156| 3: [ExprStmt] <Expr>;
# 156| 0: [WhenExpr] when ...
#-----| 0: (branch)
# 156| 0: [WhenBranch] ... -> ...
# 156| 0: [InstanceOfExpr] ...instanceof...
# 156| 0: [VarAccess] x
# 156| 1: [TypeAccess] Subclass1
@@ -921,7 +921,7 @@ exprs.kt:
# 156| 0: [AssignExpr] ...=...
# 156| 0: [VarAccess] q
# 156| 1: [IntegerLiteral] 2
#-----| 1: (branch)
# 156| 1: [WhenBranch] ... -> ...
# 156| 0: [BooleanLiteral] true
# 156| 1: [BlockStmt] { ... }
# 156| 0: [ExprStmt] <Expr>;
@@ -938,7 +938,7 @@ exprs.kt:
# 160| -1: [VarAccess] p
# 161| 1: [ExprStmt] <Expr>;
# 161| 0: [WhenExpr] when ...
#-----| 0: (branch)
# 161| 0: [WhenBranch] ... -> ...
# 161| 0: [ValueNEExpr] ... (value not-equals) ...
# 161| 0: [VarAccess] r
# 161| 1: [NullLiteral] null
@@ -2833,7 +2833,7 @@ samConversion.kt:
# 9| 0: [VarAccess] i
# 9| -3: [TypeAccess] IntPredicate
# 9| 0: [WhenExpr] when ...
#-----| 0: (branch)
# 9| 0: [WhenBranch] ... -> ...
# 9| 0: [VarAccess] b
# 9| 1: [ExprStmt] <Expr>;
# 9| 0: [LambdaExpr] ...->...
@@ -2854,7 +2854,7 @@ samConversion.kt:
# 9| -3: [TypeAccess] Function1<Integer,Boolean>
# 9| 0: [TypeAccess] Integer
# 9| 1: [TypeAccess] Boolean
#-----| 1: (branch)
# 9| 1: [WhenBranch] ... -> ...
# 9| 0: [BooleanLiteral] true
# 11| 1: [ExprStmt] <Expr>;
# 11| 0: [LambdaExpr] ...->...
@@ -3458,25 +3458,25 @@ whenExpr.kt:
# 2| 0: [VarAccess] i
# 2| 1: [ExprStmt] <Expr>;
# 2| 0: [WhenExpr] when ...
#-----| 0: (branch)
# 3| 0: [WhenBranch] ... -> ...
# 3| 0: [ValueEQExpr] ... (value equals) ...
# 3| 0: [VarAccess] tmp0_subject
# 3| 1: [IntegerLiteral] 0
# 3| 1: [ExprStmt] <Expr>;
# 3| 0: [IntegerLiteral] 1
#-----| 1: (branch)
# 4| 1: [WhenBranch] ... -> ...
# 4| 0: [ValueEQExpr] ... (value equals) ...
# 4| 0: [VarAccess] tmp0_subject
# 4| 1: [IntegerLiteral] 1
# 4| 1: [ExprStmt] <Expr>;
# 4| 0: [IntegerLiteral] 2
#-----| 2: (branch)
# 5| 2: [WhenBranch] ... -> ...
# 5| 0: [ValueEQExpr] ... (value equals) ...
# 5| 0: [VarAccess] tmp0_subject
# 5| 1: [IntegerLiteral] 2
# 5| 1: [ReturnStmt] return ...
# 5| 0: [IntegerLiteral] 3
#-----| 3: (branch)
# 6| 3: [WhenBranch] ... -> ...
# 6| 0: [ValueEQExpr] ... (value equals) ...
# 6| 0: [VarAccess] tmp0_subject
# 6| 1: [IntegerLiteral] 3
@@ -3484,7 +3484,7 @@ whenExpr.kt:
# 6| 0: [ClassInstanceExpr] new Exception(...)
# 6| -3: [TypeAccess] Exception
# 6| 0: [StringLiteral] No threes please
#-----| 4: (branch)
# 7| 4: [WhenBranch] ... -> ...
# 7| 0: [BooleanLiteral] true
# 7| 1: [ExprStmt] <Expr>;
# 7| 0: [IntegerLiteral] 999

View File

@@ -1,7 +1,10 @@
| stmts.kt:2:41:20:1 | { ... } | BlockStmt |
| stmts.kt:3:5:6:5 | <Expr>; | ExprStmt |
| stmts.kt:3:8:4:5 | ... -> ... | WhenBranch |
| stmts.kt:3:15:4:5 | { ... } | BlockStmt |
| stmts.kt:4:15:5:5 | ... -> ... | WhenBranch |
| stmts.kt:4:22:5:5 | { ... } | BlockStmt |
| stmts.kt:5:12:6:5 | ... -> ... | WhenBranch |
| stmts.kt:5:12:6:5 | { ... } | BlockStmt |
| stmts.kt:7:5:8:16 | while (...) | WhileStmt |
| stmts.kt:8:9:8:16 | return ... | ReturnStmt |
@@ -14,11 +17,15 @@
| 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:35:17:43 | { ... } | BlockStmt |
| stmts.kt:17:37:17:37 | <Expr>; | ExprStmt |
| stmts.kt:17:50:17:58 | { ... } | BlockStmt |
| stmts.kt:17:52:17:52 | <Expr>; | 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:37:18:37 | <Expr>; | ExprStmt |
| stmts.kt:18:52:18:52 | <Expr>; | ExprStmt |
| stmts.kt:19:5:19:16 | return ... | ReturnStmt |
@@ -28,6 +35,7 @@
| stmts.kt:24:9:26:25 | do ... while (...) | DoStmt |
| stmts.kt:24:9:26:25 | { ... } | BlockStmt |
| stmts.kt:24:13:26:9 | { ... } | BlockStmt |
| stmts.kt:25:13:25:33 | ... -> ... | WhenBranch |
| stmts.kt:25:13:25:33 | <Expr>; | ExprStmt |
| stmts.kt:25:24:25:33 | break | BreakStmt |
| stmts.kt:28:5:29:16 | while (...) | WhileStmt |