custom pragmas: proper error handling

This commit is contained in:
Andreas Rumpf
2018-02-12 16:40:15 +01:00
parent cddc389784
commit fc967cc715

View File

@@ -657,15 +657,16 @@ proc pragmaGuard(c: PContext; it: PNode; kind: TSymKind): PSym =
result = qualifiedLookUp(c, n, {checkUndeclared})
proc semCustomPragma(c: PContext, n: PNode): PNode =
assert(n.kind in nkPragmaCallKinds + {nkIdent})
if n.kind == nkIdent:
result = newTree(nkCall, n)
elif n.kind == nkExprColonExpr:
# pragma: arg -> pragma(arg)
result = newTree(nkCall, n[0], n[1])
else:
elif n.kind in nkPragmaCallKinds + {nkIdent}:
result = n
else:
invalidPragma(n)
return n
let r = c.semOverloadedCall(c, result, n, {skTemplate}, {})
if r.isNil or sfCustomPragma notin r[0].sym.flags: