Print comment following a JSX generic (#6209)

master
Lucas Duailibe 2019-06-10 09:30:54 -03:00 committed by GitHub
parent d6cf6ac548
commit 4e8f911a29
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 129 additions and 5 deletions

View File

@ -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

View File

@ -19,7 +19,7 @@
"@babel/parser": "7.2.0",
"@glimmer/syntax": "0.38.4",
"@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-html-parser": "1.2.0",
"camelcase": "4.1.0",

View File

@ -2154,7 +2154,10 @@ function printPathNoParens(path, options, print, args) {
const n = path.getValue();
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
if (n.selfClosing && !n.attributes.length && !nameHasComments) {

View File

@ -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`] = `
====================================options=====================================
parsers: ["typescript"]

View File

@ -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>
</>
);

View File

@ -782,9 +782,10 @@
version "5.5.0"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.5.0.tgz#146c2a29ee7d3bae4bf2fcb274636e264c813c45"
"@typescript-eslint/typescript-estree@1.6.0":
version "1.6.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.6.0.tgz#6cf43a07fee08b8eb52e4513b428c8cdc9751ef0"
"@typescript-eslint/typescript-estree@1.10.2":
version "1.10.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.10.2.tgz#8403585dd74b6cfb6f78aa98b6958de158b5897b"
integrity sha512-Kutjz0i69qraOsWeI8ETqYJ07tRLvD9URmdrMoF10bG8y8ucLmPtSxROvVejWvlJUGl2et/plnMiKRDW+rhEhw==
dependencies:
lodash.unescape "4.0.1"
semver "5.5.0"