eval context for macros lives as long as the current module is compiled

This commit is contained in:
Araq 2011-10-28 01:38:41 +02:00
commit a0a8934a4f
6 changed files with 68 additions and 25 deletions

View file

@ -107,8 +107,9 @@ proc semAfterMacroCall(c: PContext, n: PNode, s: PSym): PNode =
proc semMacroExpr(c: PContext, n: PNode, sym: PSym,
semCheck: bool = true): PNode =
markUsed(n, sym)
var p = newEvalContext(c.module, "", false)
result = evalMacroCall(p, n, sym)
if c.evalContext == nil:
c.evalContext = newEvalContext(c.module, "", false)
result = evalMacroCall(c.evalContext, n, sym)
if semCheck: result = semAfterMacroCall(c, result, sym)
proc forceBool(c: PContext, n: PNode): PNode =