real quick here is the code for the change
macro getCustomPragmaVal*(n: typed, cp: typed{nkSym}): untyped =
let pragmaNode = customPragmaNode(n)
result = newTree(nnkPar)
for p in pragmaNode:
if p.kind in nnkPragmaCallKinds and p.len > 0 and p[0].kind == nnkSym and p[0] == cp:
if p.len > 1:
for arg in 1..(p.len-1):
result.add p[arg]
return
else:
return p[1]
error(n.repr & " doesn't have a pragma named " & cp.repr()) # returning an empty node results in most cases in a cryptic error,
and the original for reference
macro getCustomPragmaVal*(n: typed, cp: typed{nkSym}): untyped =
let pragmaNode = customPragmaNode(n)
for p in pragmaNode:
if p.kind in nnkPragmaCallKinds and p.len > 0 and p[0].kind == nnkSym and p[0] == cp:
return p[1]
error(n.repr & " doesn't have a pragma named " & cp.repr()) # returning an empty node results in most cases in a cryptic error,
now running the original version with this code
template test_prag(d:int,b:int) {.pragma.}
type
test_type {.tprag(10,20).} = int
var a:test_type = 0
echo a.getCustomPragmaVal(tprag) # this outputs 10, there is no way to get the second value that I know of
but with the change it would output
(Field0: 10, Field1: 20)
ill be using this myself, but I wanted to get others opinions