Don't skip ChainExpression in isMemberExpression (#18652)
This commit is contained in:
1 parent
a797d40e2f
commit
ece892d6f0
8 files changed
+56
-10
No files matched your search
@@ -0,0 +1,22 @@
|
||||
#### Fix inconsistent formatting of class superClass (#18652 by @fisker)
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
```tsx
|
||||
// Input
|
||||
class ALongLongLongLongLongLongLongLongLongLongLongLongClassName
|
||||
extends foo.bar.Baz {}
|
||||
class ALongLongLongLongLongLongLongLongLongLongLongLongClassName
|
||||
extends foo.bar.Baz! {}
|
||||
|
||||
// Prettier stable
|
||||
class ALongLongLongLongLongLongLongLongLongLongLongLongClassName
|
||||
extends foo.bar.Baz {}
|
||||
class ALongLongLongLongLongLongLongLongLongLongLongLongClassName extends (foo
|
||||
.bar.Baz!) {}
|
||||
|
||||
// Prettier main
|
||||
class ALongLongLongLongLongLongLongLongLongLongLongLongClassName
|
||||
extends foo.bar.Baz {}
|
||||
class ALongLongLongLongLongLongLongLongLongLongLongLongClassName
|
||||
extends (foo.bar.Baz!) {}
|
||||
```
|
||||
@@ -1243,6 +1243,7 @@ function isDecoratorMemberExpression(node) {
|
||||
if (isMemberExpression(node)) {
|
||||
return (
|
||||
!node.computed &&
|
||||
// @ts-expect-error -- doesn't exists on `MemberExpression`
|
||||
!node.optional &&
|
||||
node.property.type === "Identifier" &&
|
||||
isDecoratorMemberExpression(node.object)
|
||||
|
||||
@@ -168,6 +168,17 @@ function hasMultipleHeritage(node) {
|
||||
return count > 1;
|
||||
}
|
||||
|
||||
function isMemberish(node) {
|
||||
if (
|
||||
node?.type === "ChainExpression" ||
|
||||
node?.type === "TSNonNullExpression"
|
||||
) {
|
||||
return isMemberish(node.expression);
|
||||
}
|
||||
|
||||
return isMemberExpression(node);
|
||||
}
|
||||
|
||||
/**
|
||||
@returns {boolean}
|
||||
*/
|
||||
@@ -187,7 +198,7 @@ function shouldPrintClassInGroupModeWithoutCache(path) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return !node.superTypeArguments && isMemberExpression(node.superClass);
|
||||
return !node.superTypeArguments && isMemberish(node.superClass);
|
||||
}
|
||||
|
||||
const heritage =
|
||||
|
||||
@@ -146,10 +146,11 @@ function shouldExtraIndentForConditionalExpression(path) {
|
||||
const node = path.getParentNode(ancestorCount);
|
||||
|
||||
if (
|
||||
(node.type === "ChainExpression" && node.expression === child) ||
|
||||
((node.type === "ChainExpression" ||
|
||||
node.type === "TSNonNullExpression") &&
|
||||
node.expression === child) ||
|
||||
(isCallExpression(node) && node.callee === child) ||
|
||||
(isMemberExpression(node) && node.object === child) ||
|
||||
(node.type === "TSNonNullExpression" && node.expression === child)
|
||||
(isMemberExpression(node) && node.object === child)
|
||||
) {
|
||||
child = node;
|
||||
continue;
|
||||
|
||||
@@ -103,10 +103,11 @@ function shouldExtraIndentForConditionalExpression(path) {
|
||||
const node = path.getParentNode(ancestorCount);
|
||||
|
||||
if (
|
||||
(node.type === "ChainExpression" && node.expression === child) ||
|
||||
((node.type === "ChainExpression" ||
|
||||
node.type === "TSNonNullExpression") &&
|
||||
node.expression === child) ||
|
||||
(isCallExpression(node) && node.callee === child) ||
|
||||
(isMemberExpression(node) && node.object === child) ||
|
||||
(node.type === "TSNonNullExpression" && node.expression === child)
|
||||
(isMemberExpression(node) && node.object === child)
|
||||
) {
|
||||
child = node;
|
||||
continue;
|
||||
|
||||
@@ -380,9 +380,10 @@ const isCallExpression = skipChainExpression(
|
||||
createTypeCheckFunction(["CallExpression", "OptionalCallExpression"]),
|
||||
);
|
||||
|
||||
const isMemberExpression = skipChainExpression(
|
||||
createTypeCheckFunction(["MemberExpression", "OptionalMemberExpression"]),
|
||||
);
|
||||
const isMemberExpression = createTypeCheckFunction([
|
||||
"MemberExpression",
|
||||
"OptionalMemberExpression",
|
||||
]);
|
||||
|
||||
/**
|
||||
* Attempts to gauge the rough complexity of a node, for example
|
||||
|
||||
+6
@@ -15,6 +15,9 @@ class Short
|
||||
class A_long_long_long_long_long_long_long_long_name12
|
||||
extends eslint.Rule?.RuleModule {}
|
||||
|
||||
class A_long_long_long_long_long_long_long_long_name12
|
||||
extends eslint.Rule.RuleModule! {}
|
||||
|
||||
interface A_long_long_long_long_long_long_long_long_name2
|
||||
extends eslint.Rule.RuleModule {}
|
||||
|
||||
@@ -34,6 +37,9 @@ class Short extends eslint.Rule.RuleModule {}
|
||||
class A_long_long_long_long_long_long_long_long_name12
|
||||
extends eslint.Rule?.RuleModule {}
|
||||
|
||||
class A_long_long_long_long_long_long_long_long_name12
|
||||
extends (eslint.Rule.RuleModule!) {}
|
||||
|
||||
interface A_long_long_long_long_long_long_long_long_name2
|
||||
extends eslint.Rule.RuleModule {}
|
||||
|
||||
|
||||
@@ -7,6 +7,9 @@ class Short
|
||||
class A_long_long_long_long_long_long_long_long_name12
|
||||
extends eslint.Rule?.RuleModule {}
|
||||
|
||||
class A_long_long_long_long_long_long_long_long_name12
|
||||
extends eslint.Rule.RuleModule! {}
|
||||
|
||||
interface A_long_long_long_long_long_long_long_long_name2
|
||||
extends eslint.Rule.RuleModule {}
|
||||
|
||||
|
||||
Reference in new issue
Block a user