mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-04 12:07:51 +00:00
fix custom pragma with backticks not working [backport] (#24151)
refs https://forum.nim-lang.org/t/12522
This commit is contained in:
@@ -800,13 +800,14 @@ proc pragmaGuard(c: PContext; it: PNode; kind: TSymKind): PSym =
|
||||
proc semCustomPragma(c: PContext, n: PNode, sym: PSym): PNode =
|
||||
var callNode: PNode
|
||||
|
||||
if n.kind in {nkIdent, nkSym}:
|
||||
case n.kind
|
||||
of nkIdentKinds:
|
||||
# pragma -> pragma()
|
||||
callNode = newTree(nkCall, n)
|
||||
elif n.kind == nkExprColonExpr:
|
||||
of nkExprColonExpr:
|
||||
# pragma: arg -> pragma(arg)
|
||||
callNode = newTree(nkCall, n[0], n[1])
|
||||
elif n.kind in nkPragmaCallKinds:
|
||||
of nkPragmaCallKinds - {nkExprColonExpr}:
|
||||
callNode = n
|
||||
else:
|
||||
invalidPragma(c, n)
|
||||
|
||||
@@ -531,3 +531,10 @@ block:
|
||||
|
||||
check(a)
|
||||
check(b)
|
||||
|
||||
block: # https://forum.nim-lang.org/t/12522, backticks
|
||||
template `mypragma`() {.pragma.}
|
||||
# Error: invalid pragma: `mypragma`
|
||||
type Test = object
|
||||
field {.`mypragma`.}: int
|
||||
doAssert Test().field.hasCustomPragma(mypragma)
|
||||
|
||||
Reference in New Issue
Block a user