mirror of
https://github.com/nim-lang/Nim.git
synced 2026-08-31 02:43:41 +00:00
Fixes #1093.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -316,15 +316,7 @@ proc genAndOr(c: PCtx; n: PNode; opc: TOpcode; dest: var TDest) =
|
||||
c.patch(L1)
|
||||
|
||||
proc canonValue*(n: PNode): PNode =
|
||||
if n.kind == nkExprColonExpr:
|
||||
result = n.sons[1]
|
||||
elif n.hasSubnodeWith(nkExprColonExpr):
|
||||
result = n.copyNode
|
||||
newSeq(result.sons, n.len)
|
||||
for i in 0.. <n.len:
|
||||
result.sons[i] = canonValue(n.sons[i])
|
||||
else:
|
||||
result = n
|
||||
result = n
|
||||
|
||||
proc rawGenLiteral(c: PCtx; n: PNode): int =
|
||||
result = c.constants.len
|
||||
|
||||
Reference in New Issue
Block a user