make quote ast a ref type (#5246)

* make quote ast a ref type
* recursive set flag isRef for quoted ast
This commit is contained in:
Arne Döring
2017-01-19 16:39:18 +01:00
committed by Andreas Rumpf
parent b85898cd41
commit 130f30ddb2
2 changed files with 75 additions and 0 deletions

View File

@@ -401,6 +401,11 @@ template handleJmpBack() {.dirty.} =
globalError(c.debug[pc], errTooManyIterations)
dec(c.loopIterations)
proc recSetFlagIsRef(arg: PNode) =
arg.flags.incl(nfIsRef)
for i in 0 ..< arg.safeLen:
arg.sons[i].recSetFlagIsRef
proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
var pc = start
var tos = tos
@@ -926,6 +931,7 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
macroCall.add(newSymNode(prc))
for i in 1 .. rc-1: macroCall.add(regs[rb+i].regToNode)
let a = evalTemplate(macroCall, prc, genSymOwner)
a.recSetFlagIsRef
ensureKind(rkNode)
regs[ra].node = a
of opcTJmp: