Print comment following a JSX generic (#6209)
This commit is contained in:
1 parent
d6cf6ac548
commit
4e8f911a29
6 files changed
+129
-5
No files matched your search
@@ -43,3 +43,36 @@ const link = <a href="example.com">http://example.com</a>;
|
|||||||
```
|
```
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
#### TypeScript: Print comment following a JSX element with generic ([#6209] by [@duailibe])
|
||||||
|
|
||||||
|
Previous versions would not print this comment, this has been fixed in this version.
|
||||||
|
|
||||||
|
<!-- prettier-ignore -->
|
||||||
|
```ts
|
||||||
|
// Input
|
||||||
|
const comp = (
|
||||||
|
<Foo<number>
|
||||||
|
// This comment goes missing
|
||||||
|
value={4}
|
||||||
|
>
|
||||||
|
Test
|
||||||
|
</Foo>
|
||||||
|
);
|
||||||
|
|
||||||
|
// Output (Prettier stable)
|
||||||
|
const comp = <Foo<number> value={4}>Test</Foo>;
|
||||||
|
|
||||||
|
// Output (Prettier master)
|
||||||
|
const comp = (
|
||||||
|
<Foo<number>
|
||||||
|
// This comment goes missing
|
||||||
|
value={4}
|
||||||
|
>
|
||||||
|
Test
|
||||||
|
</Foo>
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
[#6209]: https://github.com/prettier/prettier/pull/6209
|
||||||
|
[@duailibe]: https://github.com/duailibe
|
||||||
+1
-1
@@ -19,7 +19,7 @@
|
|||||||
"@babel/parser": "7.2.0",
|
"@babel/parser": "7.2.0",
|
||||||
"@glimmer/syntax": "0.38.4",
|
"@glimmer/syntax": "0.38.4",
|
||||||
"@iarna/toml": "2.2.3",
|
"@iarna/toml": "2.2.3",
|
||||||
"@typescript-eslint/typescript-estree": "1.6.0",
|
"@typescript-eslint/typescript-estree": "1.10.2",
|
||||||
"angular-estree-parser": "1.1.5",
|
"angular-estree-parser": "1.1.5",
|
||||||
"angular-html-parser": "1.2.0",
|
"angular-html-parser": "1.2.0",
|
||||||
"camelcase": "4.1.0",
|
"camelcase": "4.1.0",
|
||||||
|
|||||||
@@ -2154,7 +2154,10 @@ function printPathNoParens(path, options, print, args) {
|
|||||||
const n = path.getValue();
|
const n = path.getValue();
|
||||||
|
|
||||||
const nameHasComments =
|
const nameHasComments =
|
||||||
n.name && n.name.comments && n.name.comments.length > 0;
|
(n.name && n.name.comments && n.name.comments.length > 0) ||
|
||||||
|
(n.typeParameters &&
|
||||||
|
n.typeParameters.comments &&
|
||||||
|
n.typeParameters.comments.length > 0);
|
||||||
|
|
||||||
// Don't break self-closing elements with no attributes and no comments
|
// Don't break self-closing elements with no attributes and no comments
|
||||||
if (n.selfClosing && !n.attributes.length && !nameHasComments) {
|
if (n.selfClosing && !n.attributes.length && !nameHasComments) {
|
||||||
|
|||||||
@@ -28,6 +28,68 @@ abstract class AbstractRule {
|
|||||||
================================================================================
|
================================================================================
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`after_jsx_generic.ts 1`] = `
|
||||||
|
====================================options=====================================
|
||||||
|
parsers: ["typescript"]
|
||||||
|
printWidth: 80
|
||||||
|
| printWidth
|
||||||
|
=====================================input======================================
|
||||||
|
let comp = (
|
||||||
|
<>
|
||||||
|
<Component<number> /* comment1 */></Component>
|
||||||
|
<Component<number> foo /* comment2 */></Component>
|
||||||
|
<Component<number> /* comment3 */ bar></Component>
|
||||||
|
<Component<number> foo /* comment4 */ bar></Component>
|
||||||
|
|
||||||
|
<Component<number>
|
||||||
|
// comment5
|
||||||
|
></Component>
|
||||||
|
<Component<number>
|
||||||
|
foo
|
||||||
|
// comment6
|
||||||
|
></Component>
|
||||||
|
<Component<number>
|
||||||
|
// comment7
|
||||||
|
foo
|
||||||
|
></Component>
|
||||||
|
<Component<number>
|
||||||
|
foo
|
||||||
|
// comment8
|
||||||
|
bar
|
||||||
|
></Component>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
=====================================output=====================================
|
||||||
|
let comp = (
|
||||||
|
<>
|
||||||
|
<Component<number> /* comment1 */></Component>
|
||||||
|
<Component<number> foo /* comment2 */></Component>
|
||||||
|
<Component<number> /* comment3 */ bar></Component>
|
||||||
|
<Component<number> foo /* comment4 */ bar></Component>
|
||||||
|
|
||||||
|
<Component<number>
|
||||||
|
// comment5
|
||||||
|
></Component>
|
||||||
|
<Component<number>
|
||||||
|
foo
|
||||||
|
// comment6
|
||||||
|
></Component>
|
||||||
|
<Component<number>
|
||||||
|
// comment7
|
||||||
|
foo
|
||||||
|
></Component>
|
||||||
|
<Component<number>
|
||||||
|
foo
|
||||||
|
// comment8
|
||||||
|
bar
|
||||||
|
></Component>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`jsx.ts 1`] = `
|
exports[`jsx.ts 1`] = `
|
||||||
====================================options=====================================
|
====================================options=====================================
|
||||||
parsers: ["typescript"]
|
parsers: ["typescript"]
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
let comp = (
|
||||||
|
<>
|
||||||
|
<Component<number> /* comment1 */></Component>
|
||||||
|
<Component<number> foo /* comment2 */></Component>
|
||||||
|
<Component<number> /* comment3 */ bar></Component>
|
||||||
|
<Component<number> foo /* comment4 */ bar></Component>
|
||||||
|
|
||||||
|
<Component<number>
|
||||||
|
// comment5
|
||||||
|
></Component>
|
||||||
|
<Component<number>
|
||||||
|
foo
|
||||||
|
// comment6
|
||||||
|
></Component>
|
||||||
|
<Component<number>
|
||||||
|
// comment7
|
||||||
|
foo
|
||||||
|
></Component>
|
||||||
|
<Component<number>
|
||||||
|
foo
|
||||||
|
// comment8
|
||||||
|
bar
|
||||||
|
></Component>
|
||||||
|
</>
|
||||||
|
);
|
||||||
@@ -782,9 +782,10 @@
|
|||||||
version "5.5.0"
|
version "5.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.5.0.tgz#146c2a29ee7d3bae4bf2fcb274636e264c813c45"
|
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.5.0.tgz#146c2a29ee7d3bae4bf2fcb274636e264c813c45"
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree@1.6.0":
|
"@typescript-eslint/typescript-estree@1.10.2":
|
||||||
version "1.6.0"
|
version "1.10.2"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.6.0.tgz#6cf43a07fee08b8eb52e4513b428c8cdc9751ef0"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.10.2.tgz#8403585dd74b6cfb6f78aa98b6958de158b5897b"
|
||||||
|
integrity sha512-Kutjz0i69qraOsWeI8ETqYJ07tRLvD9URmdrMoF10bG8y8ucLmPtSxROvVejWvlJUGl2et/plnMiKRDW+rhEhw==
|
||||||
dependencies:
|
dependencies:
|
||||||
lodash.unescape "4.0.1"
|
lodash.unescape "4.0.1"
|
||||||
semver "5.5.0"
|
semver "5.5.0"
|
||||||
|
|||||||
Reference in new issue
Block a user