summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorVincent Burns <discoloda@gmail.com>2014-01-13 01:16:24 -0500
committerVincent Burns <discoloda@gmail.com>2014-01-13 01:16:24 -0500
commit97eaeb3aec42b2bf33190a8949d4673a547cdac6 (patch)
treed1453126adef01a26577bf5de735aef1f15865fe /compiler
parent570f8b21e196d8f8046e1e4c4d59db2aef2f0ea9 (diff)
downloadNim-97eaeb3aec42b2bf33190a8949d4673a547cdac6.tar.gz
for statements support comma expressions
Diffstat (limited to 'compiler')
-rw-r--r--compiler/c2nim/cparse.nim6
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/c2nim/cparse.nim b/compiler/c2nim/cparse.nim
index bf785b13f..cfda51167 100644
--- a/compiler/c2nim/cparse.nim
+++ b/compiler/c2nim/cparse.nim
@@ -1583,6 +1583,8 @@ proc parseStandaloneStruct(p: var TParser, isUnion: bool): PNode =
     backtrackContext(p)
     result = declaration(p)
 
+proc embedStmts(sl, a: PNode)
+
 proc parseFor(p: var TParser, result: PNode) = 
   # 'for' '(' expression_statement expression_statement expression? ')'
   #   statement
@@ -1590,7 +1592,7 @@ proc parseFor(p: var TParser, result: PNode) =
   eat(p, pxParLe, result)
   var initStmt = declarationOrStatement(p)
   if initStmt.kind != nkEmpty:
-    addSon(result, initStmt)
+    embedStmts(result, initStmt)
   var w = newNodeP(nkWhileStmt, p)
   var condition = expressionStatement(p)
   if condition.kind == nkEmpty: condition = newIdentNodeP("true", p)
@@ -1600,7 +1602,7 @@ proc parseFor(p: var TParser, result: PNode) =
   var loopBody = nestedStatement(p)
   if step.kind != nkEmpty:
     loopBody = buildStmtList(loopBody)
-    addSon(loopBody, step)
+    embedStmts(loopBody, step)
   addSon(w, loopBody)
   addSon(result, w)