From e6fc044107c580c056069f1a3638006e83f1360e Mon Sep 17 00:00:00 2001 From: Araq Date: Tue, 8 Jan 2013 18:20:40 +0100 Subject: [PATCH] fixes #299 --- compiler/ccgcalls.nim | 4 ++-- tests/compile/tclosure4.nim | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 tests/compile/tclosure4.nim diff --git a/compiler/ccgcalls.nim b/compiler/ccgcalls.nim index 2673f98b8..53c371b3d 100644 --- a/compiler/ccgcalls.nim +++ b/compiler/ccgcalls.nim @@ -146,7 +146,7 @@ proc genClosureCall(p: BProc, le, ri: PNode, d: var TLoc) = proc addComma(r: PRope): PRope = result = if r == nil: r else: con(r, ", ") - const CallPattern = "$1.ClEnv? $1.ClPrc($3$1.ClEnv) : (($4)($1.ClPrc))($2);$n" + const CallPattern = "$1.ClEnv? $1.ClPrc($3$1.ClEnv) : (($4)($1.ClPrc))($2)" var op: TLoc initLocExpr(p, ri.sons[0], op) var pl: PRope @@ -164,7 +164,7 @@ proc genClosureCall(p: BProc, le, ri: PNode, d: var TLoc) = if i < length - 1: app(pl, ", ") template genCallPattern = - lineF(p, cpsStmts, CallPattern, op.r, pl, pl.addComma, rawProc) + lineF(p, cpsStmts, CallPattern & ";$n", op.r, pl, pl.addComma, rawProc) let rawProc = getRawProcType(p, typ) if typ.sons[0] != nil: diff --git a/tests/compile/tclosure4.nim b/tests/compile/tclosure4.nim new file mode 100644 index 000000000..9584fa98a --- /dev/null +++ b/tests/compile/tclosure4.nim @@ -0,0 +1,13 @@ + +import json, tables + +proc run(json_params: TTable) = + let json_elems = json_params["files"].elems + # These fail compilation. + var files = each(json_elems, proc (x: PJsonNode): string = x.str) + #var files = json_elems.each do (x: PJsonNode) -> string: x.str + echo "Hey!" + +when isMainModule: + let text = """{"files": ["a", "b", "c"]}""" + run(toTable((text.parseJson).fields))