diff --git a/changelog_unreleased/javascript/18245.md b/changelog_unreleased/javascript/18245.md new file mode 100644 index 000000000..1d005b65d --- /dev/null +++ b/changelog_unreleased/javascript/18245.md @@ -0,0 +1,21 @@ +#### Improve formatting of logical expression as callee of new expression (#18245 by @fisker) + + +```jsx +// Input +a = new ( + a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition +)(); + +// Prettier stable +a = new (a_long_long_long_long_condition || + a_long_long_long_long_condition || + a_long_long_long_long_condition)(); + +// Prettier main +a = new ( + a_long_long_long_long_condition || + a_long_long_long_long_condition || + a_long_long_long_long_condition +)(); +``` diff --git a/src/language-js/print/binaryish.js b/src/language-js/print/binaryish.js index 2213ab490..0c0310947 100644 --- a/src/language-js/print/binaryish.js +++ b/src/language-js/print/binaryish.js @@ -83,7 +83,8 @@ function printBinaryishExpression(path, options, print) { // c // ).call() if ( - (isCallExpression(parent) && parent.callee === node) || + (key === "callee" && + (isCallExpression(parent) || parent.type === "NewExpression")) || parent.type === "UnaryExpression" || (isMemberExpression(parent) && !parent.computed) ) { diff --git a/tests/format/js/call/boolean/__snapshots__/format.test.js.snap b/tests/format/js/call/boolean/__snapshots__/format.test.js.snap index 3c6f5ab5d..ddc829c33 100644 --- a/tests/format/js/call/boolean/__snapshots__/format.test.js.snap +++ b/tests/format/js/call/boolean/__snapshots__/format.test.js.snap @@ -144,9 +144,11 @@ a = ( || a_long_long_long_long_condition || a_long_long_long_long_condition )(Boolean); -a = new (a_long_long_long_long_condition +a = new ( + a_long_long_long_long_condition || a_long_long_long_long_condition - || a_long_long_long_long_condition)(Foo); + || a_long_long_long_long_condition +)(Foo); // Not \`Boolean\` a = not_Boolean( @@ -326,9 +328,11 @@ a = ( a_long_long_long_long_condition || a_long_long_long_long_condition )(Boolean); -a = new (a_long_long_long_long_condition || +a = new ( a_long_long_long_long_condition || - a_long_long_long_long_condition)(Foo); + a_long_long_long_long_condition || + a_long_long_long_long_condition +)(Foo); // Not \`Boolean\` a = not_Boolean(