diff --git a/lib/6to5/generation/generator.js b/lib/6to5/generation/generator.js index d2da9ac9c4..2fb74be764 100644 --- a/lib/6to5/generation/generator.js +++ b/lib/6to5/generation/generator.js @@ -148,10 +148,11 @@ CodeGenerator.prototype.print = function (node, parent, opts) { }; if (this[node.type]) { - // only compute if this node needs parens if our parent has been changed - // since acorn would've wrapped us in a ParanthesizedExpression - var needsParens = n.needsParens(node, parent); + var needsCommentParens = t.isExpression(node) && node.leadingComments && node.leadingComments.length; + var needsParens = needsCommentParens || n.needsParens(node, parent); + if (needsParens) this.push("("); + if (needsCommentParens) this.indent(); this.printLeadingComments(node, parent); @@ -162,6 +163,10 @@ CodeGenerator.prototype.print = function (node, parent, opts) { this[node.type](node, this.buildPrint(node), parent); + if (needsCommentParens) { + this.newline(); + this.dedent(); + } if (needsParens) this.push(")"); this.map.mark(node, "end"); diff --git a/lib/6to5/generation/node/index.js b/lib/6to5/generation/node/index.js index 8b364bfcdb..b1ab6b7599 100644 --- a/lib/6to5/generation/node/index.js +++ b/lib/6to5/generation/node/index.js @@ -60,10 +60,6 @@ Node.prototype.needsParens = function () { if (!parent) return false; - if (t.isExpression(node) && node.leadingComments && node.leadingComments.length) { - return true; - } - if (t.isNewExpression(parent) && parent.callee === node) { return t.isCallExpression(node) || _.some(node, function (val) { return t.isCallExpression(val);