From 8a22c5cc043580c2df345ac8bc872f1ede6a6f91 Mon Sep 17 00:00:00 2001 From: fisker Date: Mon, 19 Dec 2022 18:39:36 +0800 Subject: [PATCH 1/3] Fix comment print --- src/language-js/comments.js | 3 +++ .../__snapshots__/jsfmt.spec.js.snap | 23 +++++++++++++++++++ .../decorator-auto-accessors/comments.ts | 5 ++++ .../decorator-auto-accessors/jsfmt.spec.js | 1 + 4 files changed, 32 insertions(+) create mode 100644 tests/format/typescript/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap create mode 100644 tests/format/typescript/decorator-auto-accessors/comments.ts create mode 100644 tests/format/typescript/decorator-auto-accessors/jsfmt.spec.js diff --git a/src/language-js/comments.js b/src/language-js/comments.js index cb32c25a13f0..560c278192b9 100644 --- a/src/language-js/comments.js +++ b/src/language-js/comments.js @@ -453,6 +453,9 @@ const propertyLikeNodeTypes = new Set([ "TSAbstractMethodDefinition", "TSDeclareMethod", "MethodDefinition", + "ClassAccessorProperty", + "AccessorProperty", + "TSAbstractAccessorProperty", ]); function handleMethodNameComments({ comment, diff --git a/tests/format/typescript/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap b/tests/format/typescript/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 000000000000..c0e6b1c68700 --- /dev/null +++ b/tests/format/typescript/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,23 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`comments.ts format 1`] = ` +====================================options===================================== +parsers: ["typescript"] +printWidth: 80 + | printWidth +=====================================input====================================== +class A { + @dec() + // comment + accessor b; +} + +=====================================output===================================== +class A { + @dec() + // comment + accessor b; +} + +================================================================================ +`; diff --git a/tests/format/typescript/decorator-auto-accessors/comments.ts b/tests/format/typescript/decorator-auto-accessors/comments.ts new file mode 100644 index 000000000000..73640ec2a1a4 --- /dev/null +++ b/tests/format/typescript/decorator-auto-accessors/comments.ts @@ -0,0 +1,5 @@ +class A { + @dec() + // comment + accessor b; +} diff --git a/tests/format/typescript/decorator-auto-accessors/jsfmt.spec.js b/tests/format/typescript/decorator-auto-accessors/jsfmt.spec.js new file mode 100644 index 000000000000..2ea3bb6eb2e4 --- /dev/null +++ b/tests/format/typescript/decorator-auto-accessors/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, ["typescript"]); From 78b24a155f6eb3b70b691ca0bb1c74cec3bf806c Mon Sep 17 00:00:00 2001 From: fisker Date: Mon, 19 Dec 2022 18:47:39 +0800 Subject: [PATCH 2/3] Add changelog --- changelog_unreleased/typescript/14038.md | 32 ++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 changelog_unreleased/typescript/14038.md diff --git a/changelog_unreleased/typescript/14038.md b/changelog_unreleased/typescript/14038.md new file mode 100644 index 000000000000..b52a5aa34d96 --- /dev/null +++ b/changelog_unreleased/typescript/14038.md @@ -0,0 +1,32 @@ +#### Fix formatting for auto-accessors with comments (#14038 by @fisker) + + +```jsx +// Input +class A { + @dec() + // comment + accessor b; +} + +// Prettier stable +class A { + @dec() + accessor // comment + b; +} + +// Prettier stable (second format) +class A { + @dec() + accessor; // comment + b; +} + +// Prettier main +class A { + @dec() + // comment + accessor b; +} +``` From b5f7de514964ee27d0eea4c1a82fedac961253e6 Mon Sep 17 00:00:00 2001 From: fisker Date: Mon, 19 Dec 2022 18:51:35 +0800 Subject: [PATCH 3/3] Move to js test --- .../{typescript => javascript}/14038.md | 0 tests/config/format-test.js | 1 + .../__snapshots__/jsfmt.spec.js.snap | 85 +++++++++++++++++++ .../decorator-auto-accessors/comments.js} | 0 .../js/decorator-auto-accessors/jsfmt.spec.js | 2 + .../__snapshots__/jsfmt.spec.js.snap | 23 ----- .../decorator-auto-accessors/jsfmt.spec.js | 1 - 7 files changed, 88 insertions(+), 24 deletions(-) rename changelog_unreleased/{typescript => javascript}/14038.md (100%) rename tests/format/{typescript/decorator-auto-accessors/comments.ts => js/decorator-auto-accessors/comments.js} (100%) delete mode 100644 tests/format/typescript/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap delete mode 100644 tests/format/typescript/decorator-auto-accessors/jsfmt.spec.js diff --git a/changelog_unreleased/typescript/14038.md b/changelog_unreleased/javascript/14038.md similarity index 100% rename from changelog_unreleased/typescript/14038.md rename to changelog_unreleased/javascript/14038.md diff --git a/tests/config/format-test.js b/tests/config/format-test.js index 3574fddf1e40..90a11e752bbe 100644 --- a/tests/config/format-test.js +++ b/tests/config/format-test.js @@ -72,6 +72,7 @@ const meriyahDisabledTests = new Set([ "static.js", "with-semicolon-1.js", "with-semicolon-2.js", + "comments.js", ].map((filename) => path.join(__dirname, "../format/js/decorator-auto-accessors", filename) ), diff --git a/tests/format/js/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap index a6850f56f69b..2263bc534b61 100644 --- a/tests/format/js/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap @@ -73,6 +73,91 @@ class Foo { ================================================================================ `; +exports[`comments.js [acorn] format 1`] = ` +"Unexpected character '@' (2:3) + 1 | class A { +> 2 | @dec() + | ^ + 3 | // comment + 4 | accessor b; + 5 | }" +`; + +exports[`comments.js [espree] format 1`] = ` +"Unexpected character '@' (2:3) + 1 | class A { +> 2 | @dec() + | ^ + 3 | // comment + 4 | accessor b; + 5 | }" +`; + +exports[`comments.js - {"semi":false} [acorn] format 1`] = ` +"Unexpected character '@' (2:3) + 1 | class A { +> 2 | @dec() + | ^ + 3 | // comment + 4 | accessor b; + 5 | }" +`; + +exports[`comments.js - {"semi":false} [espree] format 1`] = ` +"Unexpected character '@' (2:3) + 1 | class A { +> 2 | @dec() + | ^ + 3 | // comment + 4 | accessor b; + 5 | }" +`; + +exports[`comments.js - {"semi":false} format 1`] = ` +====================================options===================================== +parsers: ["babel", "typescript", "babel-flow"] +printWidth: 80 +semi: false + | printWidth +=====================================input====================================== +class A { + @dec() + // comment + accessor b; +} + +=====================================output===================================== +class A { + @dec() + // comment + accessor b +} + +================================================================================ +`; + +exports[`comments.js format 1`] = ` +====================================options===================================== +parsers: ["babel", "typescript", "babel-flow"] +printWidth: 80 + | printWidth +=====================================input====================================== +class A { + @dec() + // comment + accessor b; +} + +=====================================output===================================== +class A { + @dec() + // comment + accessor b; +} + +================================================================================ +`; + exports[`computed.js [acorn] format 1`] = ` "Unexpected token (2:12) 1 | class Foo { diff --git a/tests/format/typescript/decorator-auto-accessors/comments.ts b/tests/format/js/decorator-auto-accessors/comments.js similarity index 100% rename from tests/format/typescript/decorator-auto-accessors/comments.ts rename to tests/format/js/decorator-auto-accessors/comments.js diff --git a/tests/format/js/decorator-auto-accessors/jsfmt.spec.js b/tests/format/js/decorator-auto-accessors/jsfmt.spec.js index 85acc64686de..8c402a09ea0b 100644 --- a/tests/format/js/decorator-auto-accessors/jsfmt.spec.js +++ b/tests/format/js/decorator-auto-accessors/jsfmt.spec.js @@ -9,6 +9,7 @@ const errors = { "static.js", "with-semicolon-1.js", "with-semicolon-2.js", + "comments.js", ], acorn: [ "basic.js", @@ -19,6 +20,7 @@ const errors = { "static.js", "with-semicolon-1.js", "with-semicolon-2.js", + "comments.js", ], }; run_spec(__dirname, parsers, { errors }); diff --git a/tests/format/typescript/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap b/tests/format/typescript/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap deleted file mode 100644 index c0e6b1c68700..000000000000 --- a/tests/format/typescript/decorator-auto-accessors/__snapshots__/jsfmt.spec.js.snap +++ /dev/null @@ -1,23 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`comments.ts format 1`] = ` -====================================options===================================== -parsers: ["typescript"] -printWidth: 80 - | printWidth -=====================================input====================================== -class A { - @dec() - // comment - accessor b; -} - -=====================================output===================================== -class A { - @dec() - // comment - accessor b; -} - -================================================================================ -`; diff --git a/tests/format/typescript/decorator-auto-accessors/jsfmt.spec.js b/tests/format/typescript/decorator-auto-accessors/jsfmt.spec.js deleted file mode 100644 index 2ea3bb6eb2e4..000000000000 --- a/tests/format/typescript/decorator-auto-accessors/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["typescript"]);