summary refs log tree commit diff stats
path: root/compiler/closureiters.nim
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2018-06-07 23:15:31 +0200
committerGitHub <noreply@github.com>2018-06-07 23:15:31 +0200
commit2b391ef9614ed9c982bb963e61be219bbbb6fc43 (patch)
treee56fb10d37ca837c3e02554c5994ef07168be5af /compiler/closureiters.nim
parent3c7bbfebb1dea666413f6824ceef53c5badf430c (diff)
parent60b9c9dc1f4a45afe2813abc4234766019862549 (diff)
downloadNim-2b391ef9614ed9c982bb963e61be219bbbb6fc43.tar.gz
Merge pull request #7991 from yglukhov/fix-7985
Fixes #7985
Diffstat (limited to 'compiler/closureiters.nim')
-rw-r--r--compiler/closureiters.nim17
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)