diff --git a/src/fast-path.js b/src/fast-path.js index ab64afae1..e2af664f0 100644 --- a/src/fast-path.js +++ b/src/fast-path.js @@ -216,13 +216,24 @@ FPp.needsParens = function(assumeExpressionContext) { } switch (node.type) { - case "UpdateExpression": case "SpreadElement": case "SpreadProperty": return parent.type === "MemberExpression" && name === "object" && parent.object === node; + case "UpdateExpression": + switch (parent.type) { + case "MemberExpression": + return name === "object" && parent.object === node; + + case "CallExpression": + case "NewExpression": + return true; + + return false; + } + case "UnaryExpression": switch (parent.type) { case "UnaryExpression": diff --git a/tests/update_expression/__snapshots__/jsfmt.spec.js.snap b/tests/update_expression/__snapshots__/jsfmt.spec.js.snap index b77426804..343115b21 100644 --- a/tests/update_expression/__snapshots__/jsfmt.spec.js.snap +++ b/tests/update_expression/__snapshots__/jsfmt.spec.js.snap @@ -1,6 +1,10 @@ exports[`test update_expression.js 1`] = ` "(this.x++).toString() +new (r++); +(x++)(); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (this.x++).toString(); +new (r++)(); +(x++)(); " `; diff --git a/tests/update_expression/update_expression.js b/tests/update_expression/update_expression.js index 762c641da..efa29b904 100644 --- a/tests/update_expression/update_expression.js +++ b/tests/update_expression/update_expression.js @@ -1 +1,3 @@ (this.x++).toString() +new (r++); +(x++)();