diff options
author | cooldome <cdome@bk.ru> | 2018-07-18 14:54:44 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-07-18 14:54:44 +0200 |
commit | a651809411b9b7f2d909f3ccfeeca844210a14de (patch) | |
tree | 6b69ad055c5221acdf388c1feec25ae0a5dc628e | |
parent | 6eedac3207cad9f7b4bfe8d631a9373a91b85846 (diff) | |
download | Nim-a651809411b9b7f2d909f3ccfeeca844210a14de.tar.gz |
Fixes #8343, Fixes #8344 (#8347)
-rw-r--r-- | compiler/renderer.nim | 8 | ||||
-rw-r--r-- | 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) |