diff options
Diffstat (limited to 'compiler/closureiters.nim')
-rw-r--r-- | compiler/closureiters.nim | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/compiler/closureiters.nim b/compiler/closureiters.nim index e8f4d62c1..5568fd37b 100644 --- a/compiler/closureiters.nim +++ b/compiler/closureiters.nim @@ -397,18 +397,17 @@ proc hasYieldsInExpressions(n: PNode): bool = proc exprToStmtList(n: PNode): tuple[s, res: PNode] = assert(n.kind == nkStmtListExpr) + result.s = newNodeI(nkStmtList, n.info) + result.s.sons = @[] - var parent = n - var lastSon = n[^1] + var n = n + while n.kind == nkStmtListExpr: + result.s.sons.add(n.sons) + result.s.sons.setLen(result.s.sons.len - 1) # delete last son + n = n[^1] - while lastSon.kind == nkStmtListExpr: - parent = lastSon - lastSon = lastSon[^1] + result.res = n - result.s = newNodeI(nkStmtList, n.info) - result.s.sons = parent.sons - result.s.sons.setLen(result.s.sons.len - 1) # delete last son - result.res = lastSon proc newEnvVarAsgn(ctx: Ctx, s: PSym, v: PNode): PNode = result = newTree(nkFastAsgn, ctx.newEnvVarAccess(s), v) |