Remove indention in logical expression in Boolean() type coercion (#18087)
Co-authored-by: fisker <lionkay@gmail.com>
This commit is contained in:
1 parent
12607085aa
commit
c93e014c28
5 files changed
+504
-1
No files matched your search
@@ -0,0 +1,42 @@
|
||||
#### Remove indention in logical expression in `Boolean()` call (#18087 by @kovsu)
|
||||
|
||||
Reduce diff when changing a condition to an opposite value, or change between `!!` and `Boolean()`.
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
```js
|
||||
// Input
|
||||
const foo = Boolean(
|
||||
a_long_long_condition ||
|
||||
a_long_long_long_condition ||
|
||||
a_long_long_long_condition
|
||||
);
|
||||
const bar = !!(
|
||||
a_long_long_condition ||
|
||||
a_long_long_long_condition ||
|
||||
a_long_long_long_condition
|
||||
);
|
||||
|
||||
// Prettier stable
|
||||
const foo = Boolean(
|
||||
a_long_long_condition ||
|
||||
a_long_long_long_condition ||
|
||||
a_long_long_long_condition,
|
||||
);
|
||||
const bar = !!(
|
||||
a_long_long_condition ||
|
||||
a_long_long_long_condition ||
|
||||
a_long_long_long_condition
|
||||
);
|
||||
|
||||
// Prettier main
|
||||
const foo = Boolean(
|
||||
a_long_long_condition ||
|
||||
a_long_long_long_condition ||
|
||||
a_long_long_long_condition
|
||||
);
|
||||
const bar = !!(
|
||||
a_long_long_condition ||
|
||||
a_long_long_long_condition ||
|
||||
a_long_long_long_condition
|
||||
);
|
||||
```
|
||||
@@ -110,7 +110,8 @@ function printBinaryishExpression(path, options, print) {
|
||||
grandparent.type !== "ReturnStatement" &&
|
||||
grandparent.type !== "ThrowStatement" &&
|
||||
!isCallExpression(grandparent)) ||
|
||||
parent.type === "TemplateLiteral";
|
||||
parent.type === "TemplateLiteral" ||
|
||||
isBooleanTypeCoercion(path);
|
||||
|
||||
const shouldIndentIfInlining =
|
||||
parent.type === "AssignmentExpression" ||
|
||||
@@ -391,4 +392,27 @@ function isVueFilterSequenceExpression(path, options) {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@returns {boolean}
|
||||
*/
|
||||
function isBooleanTypeCoercion(path) {
|
||||
if (path.key !== "arguments") {
|
||||
return false;
|
||||
}
|
||||
|
||||
const { parent } = path;
|
||||
if (
|
||||
!(
|
||||
isCallExpression(parent) &&
|
||||
!parent.optional &&
|
||||
parent.arguments.length === 1
|
||||
)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const { callee } = parent;
|
||||
return callee.type === "Identifier" && callee.name === "Boolean";
|
||||
}
|
||||
|
||||
export { printBinaryishExpression, shouldInlineLogicalExpression };
|
||||
@@ -0,0 +1,366 @@
|
||||
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
|
||||
|
||||
exports[`boolean.js - {"experimentalOperatorPosition":"start"} format 1`] = `
|
||||
====================================options=====================================
|
||||
experimentalOperatorPosition: "start"
|
||||
parsers: ["babel", "typescript", "flow"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
)?.toString();
|
||||
a = new Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
);
|
||||
a = !(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition
|
||||
);
|
||||
a = !!(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition
|
||||
);
|
||||
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
a = new Foo(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
|
||||
// Different operators
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition && a_long_long_long_long_condition && a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition ?? a_long_long_long_long_condition ?? a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition + a_long_long_long_long_condition + a_long_long_long_long_condition,
|
||||
);
|
||||
|
||||
// Not argument
|
||||
a = (
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition
|
||||
)(Boolean);
|
||||
a = new (
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition
|
||||
)(Foo);
|
||||
|
||||
// Not \`Boolean\`
|
||||
a = not_Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
);
|
||||
|
||||
// Nested
|
||||
a = Boolean(
|
||||
(a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition)
|
||||
&&
|
||||
(a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition)
|
||||
);
|
||||
a = Boolean(
|
||||
(a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition)
|
||||
||
|
||||
(a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition)
|
||||
);
|
||||
a = Boolean(Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
));
|
||||
|
||||
=====================================output=====================================
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition,
|
||||
)?.toString();
|
||||
a = new Boolean(
|
||||
a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition,
|
||||
);
|
||||
a = !(
|
||||
a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
);
|
||||
a = !!(
|
||||
a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
);
|
||||
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
a = new Foo(
|
||||
a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
|
||||
// Different operators
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition
|
||||
&& a_long_long_long_long_condition
|
||||
&& a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition
|
||||
?? a_long_long_long_long_condition
|
||||
?? a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition
|
||||
+ a_long_long_long_long_condition
|
||||
+ a_long_long_long_long_condition,
|
||||
);
|
||||
|
||||
// Not argument
|
||||
a = (
|
||||
a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
)(Boolean);
|
||||
a = new (a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition)(Foo);
|
||||
|
||||
// Not \`Boolean\`
|
||||
a = not_Boolean(
|
||||
a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition,
|
||||
);
|
||||
|
||||
// Nested
|
||||
a = Boolean(
|
||||
(a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition)
|
||||
&& (a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition),
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
Boolean(
|
||||
a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition
|
||||
|| a_long_long_long_long_condition,
|
||||
),
|
||||
);
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`boolean.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel", "typescript", "flow"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
)?.toString();
|
||||
a = new Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
);
|
||||
a = !(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition
|
||||
);
|
||||
a = !!(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition
|
||||
);
|
||||
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
a = new Foo(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
|
||||
// Different operators
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition && a_long_long_long_long_condition && a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition ?? a_long_long_long_long_condition ?? a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition + a_long_long_long_long_condition + a_long_long_long_long_condition,
|
||||
);
|
||||
|
||||
// Not argument
|
||||
a = (
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition
|
||||
)(Boolean);
|
||||
a = new (
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition
|
||||
)(Foo);
|
||||
|
||||
// Not \`Boolean\`
|
||||
a = not_Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
);
|
||||
|
||||
// Nested
|
||||
a = Boolean(
|
||||
(a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition)
|
||||
&&
|
||||
(a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition)
|
||||
);
|
||||
a = Boolean(
|
||||
(a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition)
|
||||
||
|
||||
(a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition)
|
||||
);
|
||||
a = Boolean(Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
));
|
||||
|
||||
=====================================output=====================================
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition,
|
||||
)?.toString();
|
||||
a = new Boolean(
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition,
|
||||
);
|
||||
a = !(
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition
|
||||
);
|
||||
a = !!(
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition
|
||||
);
|
||||
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
a = new Foo(
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
|
||||
// Different operators
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition &&
|
||||
a_long_long_long_long_condition &&
|
||||
a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition ??
|
||||
a_long_long_long_long_condition ??
|
||||
a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition +
|
||||
a_long_long_long_long_condition +
|
||||
a_long_long_long_long_condition,
|
||||
);
|
||||
|
||||
// Not argument
|
||||
a = (
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition
|
||||
)(Boolean);
|
||||
a = new (a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition)(Foo);
|
||||
|
||||
// Not \`Boolean\`
|
||||
a = not_Boolean(
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition,
|
||||
);
|
||||
|
||||
// Nested
|
||||
a = Boolean(
|
||||
(a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition) &&
|
||||
(a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition),
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
Boolean(
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition ||
|
||||
a_long_long_long_long_condition,
|
||||
),
|
||||
);
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
@@ -0,0 +1,67 @@
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
)?.toString();
|
||||
a = new Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
);
|
||||
a = !(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition
|
||||
);
|
||||
a = !!(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition
|
||||
);
|
||||
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
a = new Foo(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
anotherArgument,
|
||||
);
|
||||
|
||||
// Different operators
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition && a_long_long_long_long_condition && a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition ?? a_long_long_long_long_condition ?? a_long_long_long_long_condition,
|
||||
);
|
||||
a = Boolean(
|
||||
a_long_long_long_long_condition + a_long_long_long_long_condition + a_long_long_long_long_condition,
|
||||
);
|
||||
|
||||
// Not argument
|
||||
a = (
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition
|
||||
)(Boolean);
|
||||
a = new (
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition
|
||||
)(Foo);
|
||||
|
||||
// Not `Boolean`
|
||||
a = not_Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
);
|
||||
|
||||
// Nested
|
||||
a = Boolean(
|
||||
(a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition)
|
||||
&&
|
||||
(a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition)
|
||||
);
|
||||
a = Boolean(
|
||||
(a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition)
|
||||
||
|
||||
(a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition)
|
||||
);
|
||||
a = Boolean(Boolean(
|
||||
a_long_long_long_long_condition || a_long_long_long_long_condition || a_long_long_long_long_condition,
|
||||
));
|
||||
@@ -0,0 +1,4 @@
|
||||
runFormatTest(import.meta, ["babel", "typescript", "flow"]);
|
||||
runFormatTest(import.meta, ["babel", "typescript", "flow"], {
|
||||
experimentalOperatorPosition: "start",
|
||||
});
|
||||
Reference in new issue
Block a user