user defined pragmas work for generics instantiated in different modules
This commit is contained in:
parent
b13c51cc2a
commit
ee9c70e034
2 changed files with 12 additions and 4 deletions
|
|
@ -601,6 +601,9 @@ proc singlePragma(c: PContext, sym: PSym, n: PNode, i: int,
|
||||||
if c.instCounter > 100:
|
if c.instCounter > 100:
|
||||||
globalError(it.info, errRecursiveDependencyX, userPragma.name.s)
|
globalError(it.info, errRecursiveDependencyX, userPragma.name.s)
|
||||||
pragma(c, sym, userPragma.ast, validPragmas)
|
pragma(c, sym, userPragma.ast, validPragmas)
|
||||||
|
# ensure the pragma is also remember for generic instantiations in other
|
||||||
|
# modules:
|
||||||
|
n.sons[i] = userPragma.ast
|
||||||
dec c.instCounter
|
dec c.instCounter
|
||||||
else:
|
else:
|
||||||
var k = whichKeyword(key.ident)
|
var k = whichKeyword(key.ident)
|
||||||
|
|
@ -883,8 +886,13 @@ proc hasPragma*(n: PNode, pragma: TSpecialWord): bool =
|
||||||
|
|
||||||
return false
|
return false
|
||||||
|
|
||||||
proc pragma(c: PContext, sym: PSym, n: PNode, validPragmas: TSpecialWords) =
|
proc pragmaRec(c: PContext, sym: PSym, n: PNode, validPragmas: TSpecialWords) =
|
||||||
if n == nil: return
|
if n == nil: return
|
||||||
for i in countup(0, sonsLen(n) - 1):
|
for i in countup(0, sonsLen(n) - 1):
|
||||||
if singlePragma(c, sym, n, i, validPragmas): break
|
if n.sons[i].kind == nkPragma: pragmaRec(c, sym, n.sons[i], validPragmas)
|
||||||
|
elif singlePragma(c, sym, n, i, validPragmas): break
|
||||||
|
|
||||||
|
proc pragma(c: PContext, sym: PSym, n: PNode, validPragmas: TSpecialWords) =
|
||||||
|
if n == nil: return
|
||||||
|
pragmaRec(c, sym, n, validPragmas)
|
||||||
implicitPragmas(c, sym, n, validPragmas)
|
implicitPragmas(c, sym, n, validPragmas)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue