diff --git a/packages/babel-generator/src/generators/expressions.js b/packages/babel-generator/src/generators/expressions.js index 12ab9f195b..c644a0fde4 100644 --- a/packages/babel-generator/src/generators/expressions.js +++ b/packages/babel-generator/src/generators/expressions.js @@ -59,9 +59,12 @@ export function ConditionalExpression(node: Object) { this.print(node.alternate, node); } -export function NewExpression(node: Object) { +export function NewExpression(node: Object, parent: Object) { this.push("new "); this.print(node.callee, node); + if (node.arguments.length === 0 && this.format.compact && + !t.isCallExpression(parent, { callee: node }) && !t.isMemberExpression(parent)) return; + this.push("("); this.printList(node.arguments, node); this.push(")"); diff --git a/packages/babel-generator/test/fixtures/compact/new-expression/actual.js b/packages/babel-generator/test/fixtures/compact/new-expression/actual.js new file mode 100644 index 0000000000..ae661bc5d3 --- /dev/null +++ b/packages/babel-generator/test/fixtures/compact/new-expression/actual.js @@ -0,0 +1,3 @@ +new X(); +new Y()(); +new F().z; diff --git a/packages/babel-generator/test/fixtures/compact/new-expression/expected.js b/packages/babel-generator/test/fixtures/compact/new-expression/expected.js new file mode 100644 index 0000000000..4491231de6 --- /dev/null +++ b/packages/babel-generator/test/fixtures/compact/new-expression/expected.js @@ -0,0 +1 @@ +new X;new Y()();new F().z;