summary refs log tree commit diff stats
path: root/compiler/vm.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2014-02-27 20:47:44 +0100
committerAraq <rumpf_a@web.de>2014-02-27 20:47:44 +0100
commitf0a70c7aaebeba4e6f637e50447d7f5a9dc5c698 (patch)
treef5f9e7e6f732d035ae1e0065d285eafac63488a5 /compiler/vm.nim
parentd828b0b96eef8fd77a57a5b71f65e2ae9f6b1f30 (diff)
downloadNim-f0a70c7aaebeba4e6f637e50447d7f5a9dc5c698.tar.gz
xmltree.`<>` macro works again
Diffstat (limited to 'compiler/vm.nim')
-rw-r--r--compiler/vm.nim6
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/vm.nim b/compiler/vm.nim
index 8411c4a4b..f9b143bce 100644
--- a/compiler/vm.nim
+++ b/compiler/vm.nim
@@ -173,12 +173,14 @@ proc asgnComplex(x: var TFullReg, y: TFullReg) =
   of rkRegisterAddr: x.regAddr = y.regAddr
   of rkNodeAddr: x.nodeAddr = y.nodeAddr
 
-proc putIntoNode(n: PNode; x: TFullReg) =
+proc putIntoNode(n: var PNode; x: TFullReg) =
   case x.kind
   of rkNone: discard
   of rkInt: n.intVal = x.intVal
   of rkFloat: n.floatVal = x.floatVal
-  of rkNode: n[] = x.node[]
+  of rkNode:
+    if nfIsRef in x.node.flags: n = x.node
+    else: n[] = x.node[]
   of rkRegisterAddr: putIntoNode(n, x.regAddr[])
   of rkNodeAddr: n[] = x.nodeAddr[][]