Fix duplicated comments on JSX super classes (#20211)
This commit is contained in:
1 parent
e5b6b2e1b8
commit
d62653b04d
4 files changed
+50
-8
No files matched your search
@@ -0,0 +1,16 @@
|
||||
#### Fix duplicated comments on JSX super classes (#20211 by @fisker)
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
```jsx
|
||||
// Input
|
||||
class A extends (/* c */ <div />) {}
|
||||
class B extends (<div /> /* c */) {}
|
||||
|
||||
// Prettier stable
|
||||
class A extends /* c */ (/* c */ <div />) {}
|
||||
class B extends (<div /> /* c */) /* c */ {}
|
||||
|
||||
// Prettier main
|
||||
class A extends (/* c */ <div />) {}
|
||||
class B extends (<div /> /* c */) {}
|
||||
```
|
||||
@@ -19,7 +19,8 @@ import needsParentheses from "../parentheses/needs-parentheses.js";
|
||||
import { isNonEmptyClassBody } from "../utilities/class-members.js";
|
||||
import { CommentCheckFlags, hasComment } from "../utilities/comments.js";
|
||||
import { createTypeCheckFunction } from "../utilities/create-type-check-function.js";
|
||||
import { isMemberExpression } from "../utilities/node-types.js";
|
||||
import { hasNodeIgnoreComment } from "../utilities/has-node-ignore-comment.js";
|
||||
import { isJsxElement, isMemberExpression } from "../utilities/node-types.js";
|
||||
import { stripChainElementWrappers } from "../utilities/strip-chain-element-wrappers.js";
|
||||
import { printAssignment } from "./assignment.js";
|
||||
import { printClassMemberDecorators, printDecorators } from "./decorators.js";
|
||||
@@ -111,18 +112,20 @@ function printClassWithoutDecorators(path, options, print) {
|
||||
}
|
||||
|
||||
if (node.superClass) {
|
||||
const printed = [
|
||||
let printed = [
|
||||
printSuperClass(path, options, print),
|
||||
print("superTypeArguments"),
|
||||
];
|
||||
const printedWithComments = path.call(
|
||||
() => ["extends ", printComments(path, printed, options)],
|
||||
"superClass",
|
||||
);
|
||||
printed = [
|
||||
"extends ",
|
||||
isJsxElement(node.superClass) && !hasNodeIgnoreComment(node.superClass)
|
||||
? printed
|
||||
: path.call(() => printComments(path, printed, options), "superClass"),
|
||||
];
|
||||
if (groupMode) {
|
||||
extendsParts.push(line, group(printedWithComments));
|
||||
extendsParts.push(line, group(printed));
|
||||
} else {
|
||||
extendsParts.push(" ", printedWithComments);
|
||||
extendsParts.push(" ", printed);
|
||||
}
|
||||
} else {
|
||||
extendsParts.push(printHeritageClauses(path, options, print, "extends"));
|
||||
|
||||
@@ -147,3 +147,22 @@ class A10 extends /* a */ /* prettier-ignore */ B {}
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`superclass-2.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel", "flow", "typescript"]
|
||||
printWidth: 80 (default) |
|
||||
=====================================input======================================
|
||||
class A11 extends (/* c */ <div />) {}
|
||||
class A12 extends (/* c *//* prettier-ignore */ <div />) {}
|
||||
class A13 extends (/* c */ <></>) {}
|
||||
class A14 extends (<div /> /* c */) {}
|
||||
|
||||
=====================================output=====================================
|
||||
class A11 extends (/* c */ <div />) {}
|
||||
class A12 extends /* c */ /* prettier-ignore */ (<div />) {}
|
||||
class A13 extends (/* c */ <></>) {}
|
||||
class A14 extends (<div /> /* c */) {}
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
@@ -0,0 +1,4 @@
|
||||
class A11 extends (/* c */ <div />) {}
|
||||
class A12 extends (/* c *//* prettier-ignore */ <div />) {}
|
||||
class A13 extends (/* c */ <></>) {}
|
||||
class A14 extends (<div /> /* c */) {}
|
||||
Reference in new issue
Block a user