diff options
author | Vincent Burns <discoloda@gmail.com> | 2014-01-13 01:16:24 -0500 |
---|---|---|
committer | Vincent Burns <discoloda@gmail.com> | 2014-01-13 01:16:24 -0500 |
commit | 97eaeb3aec42b2bf33190a8949d4673a547cdac6 (patch) | |
tree | d1453126adef01a26577bf5de735aef1f15865fe /compiler | |
parent | 570f8b21e196d8f8046e1e4c4d59db2aef2f0ea9 (diff) | |
download | Nim-97eaeb3aec42b2bf33190a8949d4673a547cdac6.tar.gz |
for statements support comma expressions
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/c2nim/cparse.nim | 6 |
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) |