@@ -107,7 +107,7 @@ proc getPragmaVal*(procAst: PNode; name: TSpecialWord): PNode =
107
107
return it[1 ]
108
108
109
109
proc pragma* (c: PContext, sym: PSym, n: PNode, validPragmas: TSpecialWords;
110
- isStatement: bool = false )
110
+ isStatement: bool = false ; comesFromPush = false )
111
111
112
112
proc recordPragma(c: PContext; n: PNode; args: varargs [string ]) =
113
113
var recorded = newNodeI(nkReplayAction, n.info)
@@ -893,7 +893,7 @@ proc singlePragma(c: PContext, sym: PSym, n: PNode, i: var int,
893
893
if keyDeep:
894
894
localError(c.config, it.info, " user pragma cannot have arguments" )
895
895
896
- pragma(c, sym, userPragma.ast, validPragmas, isStatement)
896
+ pragma(c, sym, userPragma.ast, validPragmas, isStatement, comesFromPush )
897
897
n.sons[i.. i] = userPragma.ast.sons # expand user pragma with its content
898
898
i.inc(userPragma.ast.len - 1 ) # inc by -1 is ok, user pragmas was empty
899
899
else :
@@ -1405,11 +1405,12 @@ proc pragmaRec(c: PContext, sym: PSym, n: PNode, validPragmas: TSpecialWords;
1405
1405
inc i
1406
1406
1407
1407
proc pragma(c: PContext, sym: PSym, n: PNode, validPragmas: TSpecialWords;
1408
- isStatement: bool ) =
1408
+ isStatement: bool ; comesFromPush = false ) =
1409
1409
if n == nil : return
1410
1410
pragmaRec(c, sym, n, validPragmas, isStatement)
1411
1411
# XXX: in the case of a callable def, this should use its info
1412
- implicitPragmas(c, sym, n.info, validPragmas)
1412
+ if not comesFromPush:
1413
+ implicitPragmas(c, sym, n.info, validPragmas)
1413
1414
1414
1415
proc pragmaCallable* (c: PContext, sym: PSym, n: PNode, validPragmas: TSpecialWords,
1415
1416
isStatement: bool = false ) =
0 commit comments