From 21f76655ad1c7ba76461460354864265ec85df87 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Sat, 5 Dec 2015 13:37:06 -0500 Subject: [PATCH] account for parent NewExpression with arguments --- packages/babel-generator/src/generators/expressions.js | 4 +++- .../test/fixtures/compact/new-expression/actual.js | 5 +++++ .../test/fixtures/compact/new-expression/expected.js | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) 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);