summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorYuriy Glukhov <yglukhov@users.noreply.github.com>2018-01-30 01:41:32 +0300
committerAndreas Rumpf <rumpf_a@web.de>2018-01-29 23:41:32 +0100
commit02c1f120eb3aa853012aaaa3bf368107347d5217 (patch)
treec5a7bdb86b31d6e0ff14c1762c03f1c3d5599f77
parent12b11fd848f68ce0543c6e0dc705b6d445e00146 (diff)
downloadNim-02c1f120eb3aa853012aaaa3bf368107347d5217.tar.gz
Fixes nimsuggest#78 (#7151)
-rw-r--r--compiler/pragmas.nim19
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)