diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2018-06-07 23:15:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-07 23:15:31 +0200 |
commit | 2b391ef9614ed9c982bb963e61be219bbbb6fc43 (patch) | |
tree | e56fb10d37ca837c3e02554c5994ef07168be5af /compiler/closureiters.nim | |
parent | 3c7bbfebb1dea666413f6824ceef53c5badf430c (diff) | |
parent | 60b9c9dc1f4a45afe2813abc4234766019862549 (diff) | |
download | Nim-2b391ef9614ed9c982bb963e61be219bbbb6fc43.tar.gz |
Merge pull request #7991 from yglukhov/fix-7985
Fixes #7985
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) |