From e06b32249f2663706e0cf0d65e200efe8e0fedf9 Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Wed, 22 Jun 2016 22:08:07 +0300 Subject: [PATCH] Added addPragma routine --- lib/core/macros.nim | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/core/macros.nim b/lib/core/macros.nim index 85ebdbfd01..976e756716 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 & "`"