Merge pull request #4394 from yglukhov/macro-routines2

Added addPragma routine
This commit is contained in:
Andreas Rumpf
2016-07-16 14:35:17 +02:00
committed by GitHub

View File

@@ -692,6 +692,14 @@ proc `pragma=`*(someProc: NimNode; val: NimNode){.compileTime.}=
assert val.kind in {nnkEmpty, nnkPragma}
someProc[4] = val
proc addPragma*(someProc, pragma: NimNode) {.compileTime.} =
## Adds pragma to routine definition
someProc.expectRoutine
var pragmaNode = someProc.pragma
if pragmaNode.isNil or pragmaNode.kind == nnkEmpty:
pragmaNode = newNimNode(nnkPragma)
someProc.pragma = pragmaNode
pragmaNode.add(pragma)
template badNodeKind(k; f): stmt{.immediate.} =
assert false, "Invalid node kind " & $k & " for macros.`" & $f & "`"