From a651809411b9b7f2d909f3ccfeeca844210a14de Mon Sep 17 00:00:00 2001 From: cooldome Date: Wed, 18 Jul 2018 14:54:44 +0200 Subject: Fixes #8343, Fixes #8344 (#8347) --- compiler/renderer.nim | 8 +++----- tests/macros/tmacrostmt.nim | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/compiler/renderer.nim b/compiler/renderer.nim index 83cf288ff..ae5b05b18 100644 --- a/compiler/renderer.nim +++ b/compiler/renderer.nim @@ -627,11 +627,12 @@ proc gstmts(g: var TSrcGen, n: PNode, c: TContext, doIndent=true) = gcoms(g) if doIndent: dedent(g) else: - if rfLongMode in c.flags: indentNL(g) + indentNL(g) gsub(g, n) gcoms(g) + dedent(g) optNL(g) - if rfLongMode in c.flags: dedent(g) + proc gif(g: var TSrcGen, n: PNode) = var c: TContext @@ -785,10 +786,7 @@ proc gblock(g: var TSrcGen, n: PNode) = if longMode(g, n) or (lsub(g, n.sons[1]) + g.lineLen > MaxLineLen): incl(c.flags, rfLongMode) gcoms(g) - # XXX I don't get why this is needed here! gstmts should already handle this! - indentNL(g) gstmts(g, n.sons[1], c) - dedent(g) proc gstaticStmt(g: var TSrcGen, n: PNode) = var c: TContext diff --git a/tests/macros/tmacrostmt.nim b/tests/macros/tmacrostmt.nim index a6e1e66dd..abb4cc050 100644 --- a/tests/macros/tmacrostmt.nim +++ b/tests/macros/tmacrostmt.nim @@ -43,4 +43,19 @@ macro repr_and_parse(fn: typed): typed = echo fn_impl.repr result = parseStmt(fn_impl.repr) -repr_and_parse(f) \ No newline at end of file +repr_and_parse(f) + + +#------------------------------------ +# bugs #8343 and #8344 +proc one_if_proc(x, y : int): int = + if x < y: result = x + else: result = y + +proc test_block(x, y : int): int = + block label: + result = x + result = y + +repr_and_parse(one_if_proc) +repr_and_parse(test_block) -- cgit 1.4.1-2-gfad0