diff --git a/lib/babel/generation/generators/statements.js b/lib/babel/generation/generators/statements.js index 01dd142849..98bb3983fb 100644 --- a/lib/babel/generation/generators/statements.js +++ b/lib/babel/generation/generators/statements.js @@ -148,7 +148,14 @@ exports.SwitchStatement = function (node, print) { this.push(")"); this.space(); this.push("{"); - print.sequence(node.cases, { indent: true }); + + print.sequence(node.cases, { + indent: true, + addNewlines: function (leading, cas) { + if (!leading && node.cases[node.cases.length - 1] === cas) return -1; + } + }); + this.push("}"); }; diff --git a/lib/babel/generation/index.js b/lib/babel/generation/index.js index c27fd5ee93..140eb8a555 100644 --- a/lib/babel/generation/index.js +++ b/lib/babel/generation/index.js @@ -174,6 +174,7 @@ CodeGenerator.prototype.print = function (node, parent, opts) { } else { // generated node if (!leading) lines++; // always include at least a single line after + if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0; var needs = n.needsWhitespaceAfter; if (leading) needs = n.needsWhitespaceBefore; @@ -234,6 +235,7 @@ CodeGenerator.prototype.printJoin = function (print, nodes, opts) { each(nodes, function (node, i) { print(node, { statement: opts.statement, + addNewlines: opts.addNewlines, after: function () { if (opts.iterator) { opts.iterator(node, i);