diff options
author | Dominik Picheta <dominikpicheta@googlemail.com> | 2013-07-25 22:15:07 +0100 |
---|---|---|
committer | Dominik Picheta <dominikpicheta@googlemail.com> | 2013-07-25 22:15:34 +0100 |
commit | e360d048bab2af6d7542d4ea8549778a657bad0d (patch) | |
tree | a59f93c9b1bf85f89cd400907fb912ce93b890b6 /lib/core | |
parent | a59874e312cf7486a4e5fcbd572a3701e22ad451 (diff) | |
download | Nim-e360d048bab2af6d7542d4ea8549778a657bad0d.tar.gz |
Added macros.newIfStmt and macros.newVarStmt.
Diffstat (limited to 'lib/core')
-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: |