diff --git a/src/fast-path.js b/src/fast-path.js index 7c1f845df..80f7d6136 100644 --- a/src/fast-path.js +++ b/src/fast-path.js @@ -243,6 +243,9 @@ FPp.needsParens = function(assumeExpressionContext) { switch (node.type) { case "CallExpression": + if (parent.type === "NewExpression" && parent.callee === node) { + return true; + } return false; case "SpreadElement": diff --git a/tests/new_expression/__snapshots__/jsfmt.spec.js.snap b/tests/new_expression/__snapshots__/jsfmt.spec.js.snap index 8d096e8b6..c545c4078 100644 --- a/tests/new_expression/__snapshots__/jsfmt.spec.js.snap +++ b/tests/new_expression/__snapshots__/jsfmt.spec.js.snap @@ -1,5 +1,18 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`call.js 1`] = ` +"new (factory())() +new factory()() + +new (factory())(factory()) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +new (factory())(); +new factory()(); + +new (factory())(factory()); +" +`; + exports[`new_expression.js 1`] = ` "new (memoize.Cache || MapCache) new (typeof this == \\"function\\" ? this : Dict()) diff --git a/tests/new_expression/call.js b/tests/new_expression/call.js new file mode 100644 index 000000000..efb5cdb7c --- /dev/null +++ b/tests/new_expression/call.js @@ -0,0 +1,4 @@ +new (factory())() +new factory()() + +new (factory())(factory())