macros.customPragmaNode: walk brackets on brackets (#21040)

(cherry picked from commit 696def2bf7)
This commit is contained in:
Emery Hemingway
2022-12-08 03:57:26 -06:00
committed by narimiran
parent 71c5bdf6b3
commit 4234bbe7bd

View File

@@ -1571,11 +1571,9 @@ proc customPragmaNode(n: NimNode): NimNode =
if n.kind in {nnkDotExpr, nnkCheckedFieldExpr}:
let name = $(if n.kind == nnkCheckedFieldExpr: n[0][1] else: n[1])
let typInst = getTypeInst(if n.kind == nnkCheckedFieldExpr or n[0].kind == nnkHiddenDeref: n[0][0] else: n[0])
var typDef = getImpl(
if typInst.kind in {nnkVarTy, nnkBracketExpr}: typInst[0]
else: typInst
)
var typInst = getTypeInst(if n.kind == nnkCheckedFieldExpr or n[0].kind == nnkHiddenDeref: n[0][0] else: n[0])
while typInst.kind in {nnkVarTy, nnkBracketExpr}: typInst = typInst[0]
var typDef = getImpl(typInst)
while typDef != nil:
typDef.expectKind(nnkTypeDef)
let typ = typDef[2].extractTypeImpl()