From 4c2b85deecedd5324519d26b20dbdb66feb7cd5f Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Mon, 5 Jan 2015 01:06:41 +1100 Subject: [PATCH] better NewExpression paren insertion --- lib/6to5/generation/node/index.js | 5 ++++- lib/6to5/generation/node/parentheses.js | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/6to5/generation/node/index.js b/lib/6to5/generation/node/index.js index b0b283d853..8828ba9030 100644 --- a/lib/6to5/generation/node/index.js +++ b/lib/6to5/generation/node/index.js @@ -61,9 +61,12 @@ Node.prototype.needsParens = function () { if (!parent) return false; if (t.isNewExpression(parent) && parent.callee === node) { - return t.isCallExpression(node) || _.some(node, function (val) { + if (t.isCallExpression(node)) return true; + + var hasCall = _.some(node, function (val) { return t.isCallExpression(val); }); + if (hasCall) return true; } return find(parens, node, parent); diff --git a/lib/6to5/generation/node/parentheses.js b/lib/6to5/generation/node/parentheses.js index 6d96d78675..8415b0c9a5 100644 --- a/lib/6to5/generation/node/parentheses.js +++ b/lib/6to5/generation/node/parentheses.js @@ -13,7 +13,8 @@ _.each([ ["<", ">", "<=", ">=", "in", "instanceof"], [">>", "<<", ">>>"], ["+", "-"], - ["*", "/", "%"] + ["*", "/", "%"], + ["**"] ], function (tier, i) { _.each(tier, function (op) { PRECEDENCE[op] = i; @@ -35,7 +36,7 @@ exports.ObjectExpression = function (node, parent) { }; exports.Binary = function (node, parent) { - if (t.isCallExpression(parent) && parent.callee === node) { + if ((t.isCallExpression(parent) || t.isNewExpression(parent)) && parent.callee === node) { return true; }