From b61399fbde740c26224753989935bb4221838f60 Mon Sep 17 00:00:00 2001 From: Jeremy Ashkenas Date: Sat, 12 Jun 2010 19:38:14 -0400 Subject: [PATCH] fixing issue #396 ... issue with nested if/elses getting mis-nested. --- lib/rewriter.js | 2 +- src/rewriter.coffee | 2 +- test/test_if.coffee | 6 ++++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/rewriter.js b/lib/rewriter.js index 5da03e03..8f1e1cf1 100644 --- a/lib/rewriter.js +++ b/lib/rewriter.js @@ -246,7 +246,7 @@ idx += 1; tok = this.tokens[idx]; pre = this.tokens[idx - 1]; - if ((!tok || (include(SINGLE_CLOSERS, tok[0]) && tok[1] !== ';') || (tok[0] === ')' && parens === 0)) && !(starter === 'ELSE' && tok[0] === 'ELSE')) { + if ((!tok || (include(SINGLE_CLOSERS, tok[0]) && tok[1] !== ';' && parens === 0) || (tok[0] === ')' && parens === 0)) && !(starter === 'ELSE' && tok[0] === 'ELSE')) { insertion = pre[0] === "," ? idx - 1 : idx; outdent = ['OUTDENT', 2, token[2]]; outdent.generated = true; diff --git a/src/rewriter.coffee b/src/rewriter.coffee index de9b5c98..1e22ffb4 100644 --- a/src/rewriter.coffee +++ b/src/rewriter.coffee @@ -171,7 +171,7 @@ exports.Rewriter: class Rewriter tok: @tokens[idx] pre: @tokens[idx - 1] if (not tok or - (include(SINGLE_CLOSERS, tok[0]) and tok[1] isnt ';') or + (include(SINGLE_CLOSERS, tok[0]) and tok[1] isnt ';' and parens is 0) or (tok[0] is ')' and parens is 0)) and not (starter is 'ELSE' and tok[0] is 'ELSE') insertion: if pre[0] is "," then idx - 1 else idx diff --git a/test/test_if.coffee b/test/test_if.coffee index db674d85..470f9352 100644 --- a/test/test_if.coffee +++ b/test/test_if.coffee @@ -42,3 +42,9 @@ else 11 ok result is 11 + + +# Nested inline if statements. +echo: (x) -> x +result: if true then echo((if false then 'xxx' else 'y') + 'a') +ok result is 'ya'