Fixes nimsuggest#78 (#7151)
This commit is contained in:
parent
12b11fd848
commit
02c1f120eb
1 changed files with 10 additions and 9 deletions
|
|
@ -658,7 +658,7 @@ proc pragmaGuard(c: PContext; it: PNode; kind: TSymKind): PSym =
|
||||||
|
|
||||||
proc semCustomPragma(c: PContext, n: PNode): PNode =
|
proc semCustomPragma(c: PContext, n: PNode): PNode =
|
||||||
assert(n.kind in nkPragmaCallKinds + {nkIdent})
|
assert(n.kind in nkPragmaCallKinds + {nkIdent})
|
||||||
|
|
||||||
if n.kind == nkIdent:
|
if n.kind == nkIdent:
|
||||||
result = newTree(nkCall, n)
|
result = newTree(nkCall, n)
|
||||||
elif n.kind == nkExprColonExpr:
|
elif n.kind == nkExprColonExpr:
|
||||||
|
|
@ -667,14 +667,15 @@ proc semCustomPragma(c: PContext, n: PNode): PNode =
|
||||||
else:
|
else:
|
||||||
result = n
|
result = n
|
||||||
|
|
||||||
result = c.semOverloadedCall(c, result, n, {skTemplate}, {})
|
let r = c.semOverloadedCall(c, result, n, {skTemplate}, {})
|
||||||
if sfCustomPragma notin result[0].sym.flags:
|
if r.isNil or sfCustomPragma notin r[0].sym.flags:
|
||||||
invalidPragma(n)
|
invalidPragma(n)
|
||||||
|
else:
|
||||||
if n.kind == nkIdent:
|
result = r
|
||||||
result = result[0]
|
if n.kind == nkIdent:
|
||||||
elif n.kind == nkExprColonExpr:
|
result = result[0]
|
||||||
result.kind = n.kind # pragma(arg) -> pragma: arg
|
elif n.kind == nkExprColonExpr:
|
||||||
|
result.kind = n.kind # pragma(arg) -> pragma: arg
|
||||||
|
|
||||||
proc singlePragma(c: PContext, sym: PSym, n: PNode, i: int,
|
proc singlePragma(c: PContext, sym: PSym, n: PNode, i: int,
|
||||||
validPragmas: TSpecialWords): bool =
|
validPragmas: TSpecialWords): bool =
|
||||||
|
|
@ -1016,7 +1017,7 @@ proc singlePragma(c: PContext, sym: PSym, n: PNode, i: int,
|
||||||
else: sym.flags.incl sfUsed
|
else: sym.flags.incl sfUsed
|
||||||
of wLiftLocals: discard
|
of wLiftLocals: discard
|
||||||
else: invalidPragma(it)
|
else: invalidPragma(it)
|
||||||
else:
|
else:
|
||||||
n.sons[i] = semCustomPragma(c, it)
|
n.sons[i] = semCustomPragma(c, it)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue