bugfix evals.nim
This commit is contained in:
parent
0b1630b46c
commit
f9d4e39a12
2 changed files with 7 additions and 4 deletions
|
|
@ -295,8 +295,9 @@ proc evalVar(c: PEvalContext, n: PNode): PNode =
|
||||||
# XXX var (x, y) = z support?
|
# XXX var (x, y) = z support?
|
||||||
#assert(a.sons[0].kind == nkSym) can happen for transformed vars
|
#assert(a.sons[0].kind == nkSym) can happen for transformed vars
|
||||||
if a.sons[2].kind != nkEmpty:
|
if a.sons[2].kind != nkEmpty:
|
||||||
# XXX copyTree could be avoided in some cases
|
result = evalAux(c, a.sons[2], {})
|
||||||
result = evalAux(c, a.sons[2], {}).copyTree
|
if result.kind in {nkType..nkNilLit}:
|
||||||
|
result = result.copyNode
|
||||||
if isSpecial(result): return
|
if isSpecial(result): return
|
||||||
else:
|
else:
|
||||||
result = getNullValue(a.sons[0].typ, a.sons[0].info)
|
result = getNullValue(a.sons[0].typ, a.sons[0].info)
|
||||||
|
|
|
||||||
|
|
@ -333,9 +333,11 @@ proc nestList*(theProc: TNimrodIdent,
|
||||||
## ``[a, b, c]`` is transformed into ``theProc(a, theProc(c, d))``.
|
## ``[a, b, c]`` is transformed into ``theProc(a, theProc(c, d))``.
|
||||||
var L = x.len
|
var L = x.len
|
||||||
result = newCall(theProc, x[L-2], x[L-1])
|
result = newCall(theProc, x[L-2], x[L-1])
|
||||||
var a = result
|
|
||||||
for i in countdown(L-3, 0):
|
for i in countdown(L-3, 0):
|
||||||
a = newCall(theProc, x[i], copyNimTree(a))
|
# XXX the 'copyNimTree' here is necessary due to a bug in the evaluation
|
||||||
|
# engine that would otherwise create an endless loop here. :-(
|
||||||
|
# This could easily user code and so should be fixed in evals.nim somehow.
|
||||||
|
result = newCall(theProc, x[i], copyNimTree(result))
|
||||||
|
|
||||||
proc treeRepr*(n: PNimrodNode): string {.compileTime.} =
|
proc treeRepr*(n: PNimrodNode): string {.compileTime.} =
|
||||||
## Convert the AST `n` to a human-readable tree-like string.
|
## Convert the AST `n` to a human-readable tree-like string.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue