Kotlin: Resugar for loops with tuples as loop variables

This commit is contained in:
Tamas Vajk
2022-10-27 15:59:30 +02:00
parent 841340b266
commit 803a97df7f
5 changed files with 72 additions and 66 deletions

View File

@@ -151,40 +151,32 @@ stmts.kt:
# 37| 0: [VarAccess] x
# 37| 1: [VarAccess] y
# 37| 1: [BreakStmt] break
# 41| 4: [BlockStmt] { ... }
# 41| 0: [LocalVariableDeclStmt] var ...;
# 41| 1: [LocalVariableDeclExpr] tmp2_iterator
# 41| 0: [MethodAccess] iterator(...)
# 41| -1: [MethodAccess] withIndex(...)
# 41| -2: [TypeAccess] Integer
# 41| -1: [TypeAccess] CollectionsKt
# 41| 0: [MethodAccess] rangeTo(...)
# 41| -1: [VarAccess] x
# 41| 0: [VarAccess] y
# 41| 1: [WhileStmt] while (...)
# 41| 0: [MethodAccess] hasNext(...)
# 41| -1: [VarAccess] tmp2_iterator
# 41| 1: [BlockStmt] { ... }
# 41| 0: [LocalVariableDeclStmt] var ...;
# 41| 1: [LocalVariableDeclExpr] tmp3_loop_parameter
# 41| 0: [MethodAccess] next(...)
# 41| -1: [VarAccess] tmp2_iterator
# 41| 1: [LocalVariableDeclStmt] var ...;
# 41| 1: [LocalVariableDeclExpr] v
# 41| 0: [MethodAccess] component1(...)
# 41| -1: [VarAccess] tmp3_loop_parameter
# 41| 2: [LocalVariableDeclStmt] var ...;
# 41| 1: [LocalVariableDeclExpr] i
# 41| 0: [MethodAccess] component2(...)
# 41| -1: [VarAccess] tmp3_loop_parameter
# 41| 3: [BlockStmt] { ... }
# 42| 0: [ExprStmt] <Expr>;
# 42| 0: [WhenExpr] when ...
# 42| 0: [WhenBranch] ... -> ...
# 42| 0: [GTExpr] ... > ...
# 42| 0: [VarAccess] x
# 42| 1: [VarAccess] y
# 42| 1: [BreakStmt] break
# 41| 4: [EnhancedForStmt] for (... : ...)
#-----| 0: (Single Local Variable Declaration)
# 41| 1: [LocalVariableDeclExpr] tmp3_loop_parameter
# 41| 1: [MethodAccess] withIndex(...)
# 41| -2: [TypeAccess] Integer
# 41| -1: [TypeAccess] CollectionsKt
# 41| 0: [MethodAccess] rangeTo(...)
# 41| -1: [VarAccess] x
# 41| 0: [VarAccess] y
# 41| 2: [BlockStmt] { ... }
# 41| 0: [LocalVariableDeclStmt] var ...;
# 41| 1: [LocalVariableDeclExpr] v
# 41| 0: [MethodAccess] component1(...)
# 41| -1: [VarAccess] tmp3_loop_parameter
# 41| 1: [LocalVariableDeclStmt] var ...;
# 41| 1: [LocalVariableDeclExpr] i
# 41| 0: [MethodAccess] component2(...)
# 41| -1: [VarAccess] tmp3_loop_parameter
# 41| 2: [BlockStmt] { ... }
# 42| 0: [ExprStmt] <Expr>;
# 42| 0: [WhenExpr] when ...
# 42| 0: [WhenBranch] ... -> ...
# 42| 0: [GTExpr] ... > ...
# 42| 0: [VarAccess] x
# 42| 1: [VarAccess] y
# 42| 1: [BreakStmt] break
# 46| 3: [Method] exceptions
# 46| 3: [TypeAccess] int
# 46| 5: [BlockStmt] { ... }

View File

@@ -85,12 +85,6 @@
| stmts.kt:41:11:41:11 | v | LocalVariableDeclExpr |
| stmts.kt:41:13:41:13 | component2(...) | MethodAccess |
| stmts.kt:41:13:41:13 | i | LocalVariableDeclExpr |
| stmts.kt:41:19:41:36 | hasNext(...) | MethodAccess |
| stmts.kt:41:19:41:36 | iterator(...) | MethodAccess |
| stmts.kt:41:19:41:36 | next(...) | MethodAccess |
| stmts.kt:41:19:41:36 | tmp2_iterator | LocalVariableDeclExpr |
| stmts.kt:41:19:41:36 | tmp2_iterator | VarAccess |
| stmts.kt:41:19:41:36 | tmp2_iterator | VarAccess |
| stmts.kt:41:19:41:36 | tmp3_loop_parameter | LocalVariableDeclExpr |
| stmts.kt:41:19:41:36 | tmp3_loop_parameter | VarAccess |
| stmts.kt:41:19:41:36 | tmp3_loop_parameter | VarAccess |

View File

@@ -7,4 +7,4 @@ jumpTarget
| stmts.kt:29:9:29:16 | continue | stmts.kt:28:5:29:16 | while (...) |
| stmts.kt:32:20:32:24 | break | stmts.kt:31:5:33:5 | for (... : ...) |
| stmts.kt:37:24:37:36 | break | stmts.kt:35:13:39:5 | for (... : ...) |
| stmts.kt:42:20:42:24 | break | stmts.kt:41:5:43:5 | while (...) |
| stmts.kt:42:20:42:24 | break | stmts.kt:41:5:43:5 | for (... : ...) |

View File

@@ -54,13 +54,10 @@ enclosing
| stmts.kt:37:13:37:36 | ... -> ... | stmts.kt:37:13:37:36 | <Expr>; |
| stmts.kt:37:13:37:36 | <Expr>; | stmts.kt:36:13:38:9 | { ... } |
| stmts.kt:37:24:37:36 | break | stmts.kt:37:13:37:36 | ... -> ... |
| stmts.kt:41:5:43:5 | while (...) | stmts.kt:41:5:43:5 | { ... } |
| stmts.kt:41:5:43:5 | { ... } | stmts.kt:22:27:44:1 | { ... } |
| stmts.kt:41:5:43:5 | { ... } | stmts.kt:41:5:43:5 | while (...) |
| stmts.kt:41:5:43:5 | for (... : ...) | stmts.kt:22:27:44:1 | { ... } |
| stmts.kt:41:5:43:5 | { ... } | stmts.kt:41:5:43:5 | for (... : ...) |
| stmts.kt:41:11:41:11 | var ...; | stmts.kt:41:5:43:5 | { ... } |
| stmts.kt:41:13:41:13 | var ...; | stmts.kt:41:5:43:5 | { ... } |
| stmts.kt:41:19:41:36 | var ...; | stmts.kt:41:5:43:5 | { ... } |
| stmts.kt:41:19:41:36 | var ...; | stmts.kt:41:5:43:5 | { ... } |
| stmts.kt:41:39:43:5 | { ... } | stmts.kt:41:5:43:5 | { ... } |
| stmts.kt:42:9:42:24 | ... -> ... | stmts.kt:42:9:42:24 | <Expr>; |
| stmts.kt:42:9:42:24 | <Expr>; | stmts.kt:41:39:43:5 | { ... } |
@@ -131,13 +128,10 @@ enclosing
| stmts.kt:37:13:37:36 | ... -> ... | WhenBranch |
| stmts.kt:37:13:37:36 | <Expr>; | ExprStmt |
| stmts.kt:37:24:37:36 | break | BreakStmt |
| stmts.kt:41:5:43:5 | while (...) | WhileStmt |
| stmts.kt:41:5:43:5 | { ... } | BlockStmt |
| stmts.kt:41:5:43:5 | for (... : ...) | EnhancedForStmt |
| stmts.kt:41:5:43:5 | { ... } | BlockStmt |
| stmts.kt:41:11:41:11 | var ...; | LocalVariableDeclStmt |
| stmts.kt:41:13:41:13 | var ...; | LocalVariableDeclStmt |
| stmts.kt:41:19:41:36 | var ...; | LocalVariableDeclStmt |
| stmts.kt:41:19:41:36 | var ...; | LocalVariableDeclStmt |
| stmts.kt:41:39:43:5 | { ... } | BlockStmt |
| stmts.kt:42:9:42:24 | ... -> ... | WhenBranch |
| stmts.kt:42:9:42:24 | <Expr>; | ExprStmt |