diff options
author | Araq <rumpf_a@web.de> | 2014-04-21 00:07:40 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2014-04-21 00:07:40 +0200 |
commit | 2c972427399da894f91d0a4bd067b63866bb20ea (patch) | |
tree | 41317db61b4c404940816989172bc1c921b7ccf0 /compiler/vm.nim | |
parent | e3fab47508138687cdc85553440c8313606395c3 (diff) | |
parent | 5cf8c05a226ba617a6e6de8ebe7e82c19d680b98 (diff) | |
download | Nim-2c972427399da894f91d0a4bd067b63866bb20ea.tar.gz |
Merge branch 'devel' of https://github.com/Araq/Nimrod into devel
Diffstat (limited to 'compiler/vm.nim')
-rw-r--r-- | compiler/vm.nim | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/compiler/vm.nim b/compiler/vm.nim index 1365abb86..836f90967 100644 --- a/compiler/vm.nim +++ b/compiler/vm.nim @@ -354,6 +354,11 @@ template handleJmpBack() {.dirty.} = globalError(c.debug[pc], errTooManyIterations) dec(c.loopIterations) +proc skipColon(n: PNode): PNode = + result = n + if n.kind == nkExprColonExpr: + result = n.sons[1] + proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg = var pc = start var tos = tos @@ -454,7 +459,7 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg = decodeBC(rkNode) let src = regs[rb].node if src.kind notin {nkEmpty..nkNilLit}: - let n = src.sons[rc] + let n = src.sons[rc].skipColon regs[ra].node = n else: stackTrace(c, tos, pc, errNilAccess) @@ -1099,6 +1104,7 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg = c.module) of opcGorge: decodeBC(rkNode) + createStr regs[ra] regs[ra].node.strVal = opGorge(regs[rb].node.strVal, regs[rc].node.strVal) of opcNError: |