diff options
author | Yuriy Glukhov <yutiy.glukhov@gmail.com> | 2016-06-22 22:08:07 +0300 |
---|---|---|
committer | Yuriy Glukhov <yutiy.glukhov@gmail.com> | 2016-06-22 22:08:07 +0300 |
commit | e06b32249f2663706e0cf0d65e200efe8e0fedf9 (patch) | |
tree | 32137e8c6195269379a72d3c6d5011ff752e1462 /lib | |
parent | d68dec11cecdbb25dc0a42bde4474831d4333d18 (diff) | |
download | Nim-e06b32249f2663706e0cf0d65e200efe8e0fedf9.tar.gz |
Added addPragma routine
Diffstat (limited to 'lib')
-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 85ebdbfd0..976e75671 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 & "`" |