From b53a426e153247b309ac693763a4613905aa7bfb Mon Sep 17 00:00:00 2001 From: Lucas Duailibe Date: Sat, 21 Oct 2017 21:30:05 -0200 Subject: [PATCH] Prevent breaking MemberExpression inside NewExpression (#3075) * Test case * Prevent breaking MemberExpression inside NewExpression --- src/printer.js | 5 ++-- .../__snapshots__/jsfmt.spec.js.snap | 25 +++++++++++++++++++ .../new_expression/with-member-expression.js | 10 ++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 tests/new_expression/with-member-expression.js diff --git a/src/printer.js b/src/printer.js index fdc9595d..829aa5cc 100644 --- a/src/printer.js +++ b/src/printer.js @@ -418,8 +418,9 @@ function genericPrintNoParens(path, options, print, args) { const shouldInline = (firstNonMemberParent && - ((firstNonMemberParent.type === "VariableDeclarator" && - firstNonMemberParent.id.type !== "Identifier") || + (firstNonMemberParent.type === "NewExpression" || + (firstNonMemberParent.type === "VariableDeclarator" && + firstNonMemberParent.id.type !== "Identifier") || (firstNonMemberParent.type === "AssignmentExpression" && firstNonMemberParent.left.type !== "Identifier"))) || n.computed || diff --git a/tests/new_expression/__snapshots__/jsfmt.spec.js.snap b/tests/new_expression/__snapshots__/jsfmt.spec.js.snap index 5a772131..a319e3d0 100644 --- a/tests/new_expression/__snapshots__/jsfmt.spec.js.snap +++ b/tests/new_expression/__snapshots__/jsfmt.spec.js.snap @@ -23,3 +23,28 @@ new (typeof this == "function" ? this : Dict())(); new (createObj()).prop(a()); `; + +exports[`with-member-expression.js 1`] = ` +function functionName() { + // indent to make the line break + if (true) { + this._aVeryLongVariableNameToForceLineBreak = new this.Promise( + (resolve, reject) => { + // do something + } + ); + } +} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +function functionName() { + // indent to make the line break + if (true) { + this._aVeryLongVariableNameToForceLineBreak = new this.Promise( + (resolve, reject) => { + // do something + } + ); + } +} + +`; diff --git a/tests/new_expression/with-member-expression.js b/tests/new_expression/with-member-expression.js new file mode 100644 index 00000000..b05c4713 --- /dev/null +++ b/tests/new_expression/with-member-expression.js @@ -0,0 +1,10 @@ +function functionName() { + // indent to make the line break + if (true) { + this._aVeryLongVariableNameToForceLineBreak = new this.Promise( + (resolve, reject) => { + // do something + } + ); + } +}