From e31203f4bfca6d878228309643390be784b6ae32 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Sat, 21 Jan 2017 22:14:22 -0600 Subject: [PATCH] Fix some parens cases for UpdateExpressions (#381) --- src/fast-path.js | 13 ++++++++++++- .../__snapshots__/jsfmt.spec.js.snap | 4 ++++ tests/update_expression/update_expression.js | 2 ++ 3 files changed, 18 insertions(+), 1 deletion(-) 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++)();