diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-04-04 02:45:43 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2016-04-04 02:45:43 +0200 |
commit | 0acdaea3342e13317ac9956add08e606208b2986 (patch) | |
tree | 6440d2c6868f2543d8245a6dffbb724b79c6ba22 /compiler | |
parent | 86e79f5cec118587c7e52f614c245176cf480597 (diff) | |
download | Nim-0acdaea3342e13317ac9956add08e606208b2986.tar.gz |
fixes #3561, fixes #2409
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/vmgen.nim | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim index 7e506f8a0..038a07a16 100644 --- a/compiler/vmgen.nim +++ b/compiler/vmgen.nim @@ -708,6 +708,10 @@ proc genAddSubInt(c: PCtx; n: PNode; dest: var TDest; opc: TOpcode) = c.genNarrow(n, dest) proc genConv(c: PCtx; n, arg: PNode; dest: var TDest; opc=opcConv) = + if n.typ.kind == arg.typ.kind and arg.typ.kind == tyProc: + # don't do anything for lambda lifting conversions: + gen(c, arg, dest) + return let tmp = c.genx(arg) if dest < 0: dest = c.getTemp(n.typ) c.gABC(n, opc, dest, tmp) @@ -1740,9 +1744,9 @@ proc gen(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags = {}) = of declarativeDefs: unused(n, dest) of nkLambdaKinds: - let s = n.sons[namePos].sym - discard genProc(c, s) - genLit(c, n.sons[namePos], dest) + #let s = n.sons[namePos].sym + #discard genProc(c, s) + genLit(c, newSymNode(n.sons[namePos].sym), dest) of nkChckRangeF, nkChckRange64, nkChckRange: let tmp0 = c.genx(n.sons[0]) |