diff --git a/packages/babel-core/test/fixtures/plugins/nested-if-alternate/exec.js b/packages/babel-core/test/fixtures/plugins/nested-if-alternate/exec.js index 8c38fbbb5b..c9dae86ffa 100644 --- a/packages/babel-core/test/fixtures/plugins/nested-if-alternate/exec.js +++ b/packages/babel-core/test/fixtures/plugins/nested-if-alternate/exec.js @@ -5,6 +5,7 @@ var res = transform('', { visitor: { Program: function(path) { if (this.done) return; + // if (false) { if (true) 42; } else 23; var inner = t.ifStatement(t.booleanLiteral(true), t.expressionStatement(t.numericLiteral(42)), null); var outer = t.ifStatement(t.booleanLiteral(false), inner, t.expressionStatement(t.numericLiteral(23))); path.replaceWith(t.program([outer])); diff --git a/packages/babel-generator/src/generators/statements.js b/packages/babel-generator/src/generators/statements.js index 744ff256d5..f42ee49fcd 100644 --- a/packages/babel-generator/src/generators/statements.js +++ b/packages/babel-generator/src/generators/statements.js @@ -16,8 +16,21 @@ export function IfStatement(node: Object) { this.push(")"); this.space(); + let consequentIsIf = t.isIfStatement(node.consequent); + if (consequentIsIf) { + this.push("{"); + this.newline(); + this.indent(); + } + this.printAndIndentOnComments(node.consequent, node); + if (consequentIsIf) { + this.dedent(); + this.newline(); + this.push("}"); + } + if (node.alternate) { if (this.isLast("}")) this.space(); this.push("else ");