diff --git a/packages/babel-generator/src/generators/expressions.js b/packages/babel-generator/src/generators/expressions.js index c644a0fde4..ab60f795d8 100644 --- a/packages/babel-generator/src/generators/expressions.js +++ b/packages/babel-generator/src/generators/expressions.js @@ -63,7 +63,9 @@ 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; + !t.isCallExpression(parent, { callee: node }) && + !t.isMemberExpression(parent) && + !(t.isNewExpression(parent) && parent.arguments.length > 0)) return; this.push("("); this.printList(node.arguments, node); diff --git a/packages/babel-generator/test/fixtures/compact/new-expression/actual.js b/packages/babel-generator/test/fixtures/compact/new-expression/actual.js index ae661bc5d3..fc24dfad4c 100644 --- a/packages/babel-generator/test/fixtures/compact/new-expression/actual.js +++ b/packages/babel-generator/test/fixtures/compact/new-expression/actual.js @@ -1,3 +1,8 @@ new X(); new Y()(); new F().z; + +new new x()(); +new new x()(a); +new new x(a)(); +new new x(a)(a); diff --git a/packages/babel-generator/test/fixtures/compact/new-expression/expected.js b/packages/babel-generator/test/fixtures/compact/new-expression/expected.js index 4491231de6..acbf200d89 100644 --- a/packages/babel-generator/test/fixtures/compact/new-expression/expected.js +++ b/packages/babel-generator/test/fixtures/compact/new-expression/expected.js @@ -1 +1 @@ -new X;new Y()();new F().z; +new X;new Y()();new F().z;new new x;new new x()(a);new new x(a);new new x(a)(a);