diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-07-16 14:35:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-16 14:35:17 +0200 |
commit | 2ac21261b4ab0ed134b380060ab2fc7c978003d3 (patch) | |
tree | 619954a419cafd2f5f9ebbcd568485058057bb2c /lib/core/macros.nim | |
parent | 622ab7089c31eae3ff107dc7d1da4aa5b179356e (diff) | |
parent | e06b32249f2663706e0cf0d65e200efe8e0fedf9 (diff) | |
download | Nim-2ac21261b4ab0ed134b380060ab2fc7c978003d3.tar.gz |
Merge pull request #4394 from yglukhov/macro-routines2
Added addPragma routine
Diffstat (limited to 'lib/core/macros.nim')
-rw-r--r-- | lib/core/macros.nim | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/core/macros.nim b/lib/core/macros.nim index 8577296f0..9623bec28 100644 --- a/lib/core/macros.nim +++ b/lib/core/macros.nim @@ -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 & "`" |