summary refs log tree commit diff stats
path: root/lib/core/macros.nim
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2016-07-16 14:35:17 +0200
committerGitHub <noreply@github.com>2016-07-16 14:35:17 +0200
commit2ac21261b4ab0ed134b380060ab2fc7c978003d3 (patch)
tree619954a419cafd2f5f9ebbcd568485058057bb2c /lib/core/macros.nim
parent622ab7089c31eae3ff107dc7d1da4aa5b179356e (diff)
parente06b32249f2663706e0cf0d65e200efe8e0fedf9 (diff)
downloadNim-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.nim8
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 & "`"