diff options
author | Yuriy Glukhov <yglukhov@users.noreply.github.com> | 2018-01-30 01:41:32 +0300 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-01-29 23:41:32 +0100 |
commit | 02c1f120eb3aa853012aaaa3bf368107347d5217 (patch) | |
tree | c5a7bdb86b31d6e0ff14c1762c03f1c3d5599f77 | |
parent | 12b11fd848f68ce0543c6e0dc705b6d445e00146 (diff) | |
download | Nim-02c1f120eb3aa853012aaaa3bf368107347d5217.tar.gz |
Fixes nimsuggest#78 (#7151)
-rw-r--r-- | compiler/pragmas.nim | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/compiler/pragmas.nim b/compiler/pragmas.nim index 810c4c416..cf289a506 100644 --- a/compiler/pragmas.nim +++ b/compiler/pragmas.nim @@ -658,7 +658,7 @@ proc pragmaGuard(c: PContext; it: PNode; kind: TSymKind): PSym = 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: @@ -667,14 +667,15 @@ proc semCustomPragma(c: PContext, n: PNode): PNode = else: result = n - result = c.semOverloadedCall(c, result, n, {skTemplate}, {}) - if sfCustomPragma notin result[0].sym.flags: + let r = c.semOverloadedCall(c, result, n, {skTemplate}, {}) + if r.isNil or sfCustomPragma notin r[0].sym.flags: invalidPragma(n) - - if n.kind == nkIdent: - result = result[0] - elif n.kind == nkExprColonExpr: - result.kind = n.kind # pragma(arg) -> pragma: arg + else: + result = r + if n.kind == nkIdent: + result = result[0] + elif n.kind == nkExprColonExpr: + result.kind = n.kind # pragma(arg) -> pragma: arg proc singlePragma(c: PContext, sym: PSym, n: PNode, i: int, validPragmas: TSpecialWords): bool = @@ -1016,7 +1017,7 @@ proc singlePragma(c: PContext, sym: PSym, n: PNode, i: int, else: sym.flags.incl sfUsed of wLiftLocals: discard else: invalidPragma(it) - else: + else: n.sons[i] = semCustomPragma(c, it) |