summary refs log tree commit diff stats
path: root/compiler/transf.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2015-07-05 14:35:51 +0200
committerAraq <rumpf_a@web.de>2015-07-05 15:00:48 +0200
commit9a8de7f3a3982e110e51951fe7425789670e0775 (patch)
treef9117e5f96f5e874429ac9e68963e5d79988ba69 /compiler/transf.nim
parent0e23ac3680c69515c9587c73a9d2e725d3a27259 (diff)
downloadNim-9a8de7f3a3982e110e51951fe7425789670e0775.tar.gz
fixes #3054
Diffstat (limited to 'compiler/transf.nim')
-rw-r--r--compiler/transf.nim5
1 files changed, 2 insertions, 3 deletions
diff --git a/compiler/transf.nim b/compiler/transf.nim
index 39842056f..dddbd51c4 100644
--- a/compiler/transf.nim
+++ b/compiler/transf.nim
@@ -465,14 +465,13 @@ proc transformFor(c: PTransf, n: PNode): PTransNode =
   var call = n.sons[length - 2]
 
   let labl = newLabel(c, n)
-  c.breakSyms.add(labl)
   result = newTransNode(nkBlockStmt, n.info, 2)
   result[0] = newSymNode(labl).PTransNode
   if call.typ.isNil:
     # see bug #3051
     result[1] = newNode(nkEmpty).PTransNode
-    discard c.breakSyms.pop
     return result
+  c.breakSyms.add(labl)
   if call.typ.kind != tyIter and
     (call.kind notin nkCallKinds or call.sons[0].kind != nkSym or
       call.sons[0].sym.kind != skIterator):
@@ -483,10 +482,10 @@ proc transformFor(c: PTransf, n: PNode): PTransNode =
 
   #echo "transforming: ", renderTree(n)
   var stmtList = newTransNode(nkStmtList, n.info, 0)
+  result[1] = stmtList
 
   var loopBody = transformLoopBody(c, n.sons[length-1])
 
-  result[1] = stmtList
   discard c.breakSyms.pop
 
   var v = newNodeI(nkVarSection, n.info)