JavaScript: Fix ugly formatting parens wrap binary expressions… (#6441)
* Modify to break specific call expression correctly * Add tests * Update CHANGELOG.unreleased.md * Add tests * Fix tests * Add pr linkmaster
parent
fd6ad2a623
commit
8f0fdba4ba
|
@ -550,6 +550,37 @@ const f = ({}: MyVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongTyp
|
|||
function g({}: Foo) {}
|
||||
```
|
||||
|
||||
#### JavaScript: Fix ugly formatting parens wrap binary expressions within call expressions ([#6441] by [@sosukesuzuki])
|
||||
|
||||
Previously, Prettier formatted parens wrap binary expressions within call expressions in a weird way. There was no line break before and after each parens.
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
```js
|
||||
(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)();
|
||||
|
||||
// Prettier (stable)
|
||||
(aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee)();
|
||||
|
||||
// Prettier (master)
|
||||
(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)();
|
||||
```
|
||||
|
||||
[#5910]: https://github.com/prettier/prettier/pull/5910
|
||||
[#6186]: https://github.com/prettier/prettier/pull/6186
|
||||
[#6206]: https://github.com/prettier/prettier/pull/6206
|
||||
|
@ -569,6 +600,7 @@ function g({}: Foo) {}
|
|||
[#6420]: https://github.com/prettier/prettier/pull/6420
|
||||
[#6411]: https://github.com/prettier/prettier/pull/6411
|
||||
[#6438]: https://github.com/prettier/prettier/pull/6411
|
||||
[#6441]: https://github.com/prettier/prettier/pull/6441
|
||||
[@duailibe]: https://github.com/duailibe
|
||||
[@gavinjoyce]: https://github.com/gavinjoyce
|
||||
[@sosukesuzuki]: https://github.com/sosukesuzuki
|
||||
|
|
|
@ -568,7 +568,8 @@ function printPathNoParens(path, options, print, args) {
|
|||
return concat(parts);
|
||||
}
|
||||
|
||||
// Break between the parens in unaries or in a member expression, i.e.
|
||||
// Break between the parens in
|
||||
// unaries or in a member or specific call expression, i.e.
|
||||
//
|
||||
// (
|
||||
// a &&
|
||||
|
@ -576,6 +577,7 @@ function printPathNoParens(path, options, print, args) {
|
|||
// c
|
||||
// ).call()
|
||||
if (
|
||||
(parent.type === "CallExpression" && parent.callee === n) ||
|
||||
parent.type === "UnaryExpression" ||
|
||||
((parent.type === "MemberExpression" ||
|
||||
parent.type === "OptionalMemberExpression") &&
|
||||
|
|
|
@ -68,6 +68,136 @@ const all = FLAG_A | FLAG_B | FLAG_C;
|
|||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`call.js 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["flow", "typescript"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)();
|
||||
|
||||
(
|
||||
aa &&
|
||||
bb &&
|
||||
cc &&
|
||||
dd &&
|
||||
ee
|
||||
)();
|
||||
|
||||
(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa +
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb +
|
||||
ccccccccccccccccccccccccc +
|
||||
ddddddddddddddddddddddddd +
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)();
|
||||
|
||||
(
|
||||
aa +
|
||||
bb +
|
||||
cc +
|
||||
dd +
|
||||
ee
|
||||
)();
|
||||
|
||||
(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)()()();
|
||||
|
||||
(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
);
|
||||
|
||||
=====================================output=====================================
|
||||
(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)();
|
||||
|
||||
(aa && bb && cc && dd && ee)();
|
||||
|
||||
(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa +
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb +
|
||||
ccccccccccccccccccccccccc +
|
||||
ddddddddddddddddddddddddd +
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)();
|
||||
|
||||
(aa + bb + cc + dd + ee)();
|
||||
|
||||
(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)()()();
|
||||
|
||||
(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
);
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`comment.js 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["flow", "typescript"]
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)();
|
||||
|
||||
(
|
||||
aa &&
|
||||
bb &&
|
||||
cc &&
|
||||
dd &&
|
||||
ee
|
||||
)();
|
||||
|
||||
(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa +
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb +
|
||||
ccccccccccccccccccccccccc +
|
||||
ddddddddddddddddddddddddd +
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)();
|
||||
|
||||
(
|
||||
aa +
|
||||
bb +
|
||||
cc +
|
||||
dd +
|
||||
ee
|
||||
)();
|
||||
|
||||
(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)()()();
|
||||
|
||||
(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
)(
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaa &&
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbb &&
|
||||
ccccccccccccccccccccccccc &&
|
||||
ddddddddddddddddddddddddd &&
|
||||
eeeeeeeeeeeeeeeeeeeeeeeee
|
||||
);
|
Loading…
Reference in New Issue