Allow ProcTy in addPragma and friends (#12158)
This commit is contained in:
parent
60911304b4
commit
5d9c1544bf
1 changed files with 12 additions and 6 deletions
|
|
@ -1191,17 +1191,23 @@ proc `params=`* (someProc: NimNode; params: NimNode) {.compileTime.}=
|
||||||
proc pragma*(someProc: NimNode): NimNode {.compileTime.} =
|
proc pragma*(someProc: NimNode): NimNode {.compileTime.} =
|
||||||
## Get the pragma of a proc type
|
## Get the pragma of a proc type
|
||||||
## These will be expanded
|
## These will be expanded
|
||||||
|
if someProc.kind == nnkProcTy:
|
||||||
|
result = someProc[1]
|
||||||
|
else:
|
||||||
someProc.expectRoutine
|
someProc.expectRoutine
|
||||||
result = someProc[4]
|
result = someProc[4]
|
||||||
proc `pragma=`*(someProc: NimNode; val: NimNode) {.compileTime.}=
|
proc `pragma=`*(someProc: NimNode; val: NimNode) {.compileTime.}=
|
||||||
## Set the pragma of a proc type
|
## Set the pragma of a proc type
|
||||||
someProc.expectRoutine
|
|
||||||
expectKind(val, {nnkEmpty, nnkPragma})
|
expectKind(val, {nnkEmpty, nnkPragma})
|
||||||
|
if someProc.kind == nnkProcTy:
|
||||||
|
someProc[1] = val
|
||||||
|
else:
|
||||||
|
someProc.expectRoutine
|
||||||
someProc[4] = val
|
someProc[4] = val
|
||||||
|
|
||||||
proc addPragma*(someProc, pragma: NimNode) {.compileTime.} =
|
proc addPragma*(someProc, pragma: NimNode) {.compileTime.} =
|
||||||
## Adds pragma to routine definition
|
## Adds pragma to routine definition
|
||||||
someProc.expectRoutine
|
someProc.expectKind(RoutineNodes + {nnkProcTy})
|
||||||
var pragmaNode = someProc.pragma
|
var pragmaNode = someProc.pragma
|
||||||
if pragmaNode.isNil or pragmaNode.kind == nnkEmpty:
|
if pragmaNode.isNil or pragmaNode.kind == nnkEmpty:
|
||||||
pragmaNode = newNimNode(nnkPragma)
|
pragmaNode = newNimNode(nnkPragma)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue