diff options
author | Araq <rumpf_a@web.de> | 2013-07-25 23:40:29 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2013-07-25 23:40:29 +0200 |
commit | 05108cf81c3758ce8fbe9026470de296c9b264a1 (patch) | |
tree | 2cc5b48002ed8e25bbab73ef4493fd40babe8c02 | |
parent | f3a2eec13babbb9dff7f4852303e0bd523af2df5 (diff) | |
parent | e360d048bab2af6d7542d4ea8549778a657bad0d (diff) | |
download | Nim-05108cf81c3758ce8fbe9026470de296c9b264a1.tar.gz |
Merge branch 'master' of github.com:Araq/Nimrod
-rw-r--r-- | lib/core/macros.nim | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/lib/core/macros.nim b/lib/core/macros.nim index 9130c3ffb..856bc0929 100644 --- a/lib/core/macros.nim +++ b/lib/core/macros.nim @@ -429,11 +429,17 @@ proc newStmtList*(stmts: varargs[PNimrodNode]): PNimrodNode {.compileTime.}= proc newBlockStmt*(label, body: PNimrodNode): PNimrodNode {.compileTime.} = ## Create a new block statement with label return newNimNode(nnkBlockStmt).add(label, body) + proc newBlockStmt*(body: PNimrodNode): PNimrodNode {.compiletime.} = ## Create a new block: stmt return newNimNode(nnkBlockStmt).add(newEmptyNode(), body) -proc newLetStmt*(name, value: PNimrodNode): PNimrodNode{.compiletime.} = +proc newVarStmt*(name, value: PNimrodNode): PNimrodNode {.compiletime.} = + ## Create a new var stmt + return newNimNode(nnkVarSection).add( + newNimNode(nnkIdentDefs).add(name, newNimNode(nnkEmpty), value)) + +proc newLetStmt*(name, value: PNimrodNode): PNimrodNode {.compiletime.} = ## Create a new let stmt return newNimNode(nnkLetSection).add( newNimNode(nnkIdentDefs).add(name, newNimNode(nnkEmpty), value)) @@ -484,6 +490,22 @@ proc newProc*(name = newEmptyNode(); params: openarray[PNimrodNode] = []; newEmptyNode(), body) +proc newIfStmt*(branches: varargs[tuple[cond, body: PNimrodNode]]): + PNimrodNode {.compiletime.} = + ## Constructor for ``if`` statements. + ## + ## .. code-block:: nimrod + ## + ## newIfStmt( + ## (Ident, StmtList), + ## ... + ## ) + ## + result = newNimNode(nnkIfStmt) + for i in branches: + result.add(newNimNode(nnkElifBranch).add(i.cond, i.body)) + + proc copyChildrenTo*(src, dest: PNimrodNode) {.compileTime.}= ## Copy all children from `src` to `dest` for i in 0 .. < src.len: |