From e8900da9166892533f57094802dca9866fd7ca1f Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Mon, 8 Jun 2026 20:46:59 +0800 Subject: [PATCH] Remove extra group around object properties (#19310) --- changelog_unreleased/javascript/19310.md | 20 +++++ src/language-js/print/object.js | 2 +- .../__snapshots__/format.test.js.snap | 12 ++- .../typescript/object-type/comments/11308.ts | 35 ++++++++ .../__snapshots__/format.test.js.snap | 87 +++++++++++++++++++ 5 files changed, 151 insertions(+), 5 deletions(-) create mode 100644 changelog_unreleased/javascript/19310.md create mode 100644 tests/format/typescript/object-type/comments/11308.ts diff --git a/changelog_unreleased/javascript/19310.md b/changelog_unreleased/javascript/19310.md new file mode 100644 index 000000000..4eee19ebb --- /dev/null +++ b/changelog_unreleased/javascript/19310.md @@ -0,0 +1,20 @@ +#### Improve formatting of comments in objects (#19310 by @fisker) + + +```jsx +// Input +const P = {/** X */ + Y: "z", +} + +// Prettier stable +const P = { + /** X */ Y: "z", +}; + +// Prettier main +const P = { + /** X */ + Y: "z", +}; +``` diff --git a/src/language-js/print/object.js b/src/language-js/print/object.js index 15adb6fa1..d7eb01655 100644 --- a/src/language-js/print/object.js +++ b/src/language-js/print/object.js @@ -105,7 +105,7 @@ function printObject(path, options, print) { /** @type {Doc[]} */ let separatorParts = []; const parts = path.map(({ node }) => { - const result = [...separatorParts, group(print())]; + const result = [...separatorParts, print()]; separatorParts = [",", line]; if (isNextLineEmpty(node, options)) { separatorParts.push(hardline); diff --git a/tests/format/js/comments/__snapshots__/format.test.js.snap b/tests/format/js/comments/__snapshots__/format.test.js.snap index fdac21fab..b1c6bb994 100644 --- a/tests/format/js/comments/__snapshots__/format.test.js.snap +++ b/tests/format/js/comments/__snapshots__/format.test.js.snap @@ -6598,7 +6598,8 @@ var a = { /* comment */ b }; =====================================output===================================== var a = { - /* comment */ b, + /* comment */ + b, } ================================================================================ @@ -6613,7 +6614,8 @@ var a = { /* comment */ b }; =====================================output===================================== var a = { - /* comment */ b, + /* comment */ + b, }; ================================================================================ @@ -6629,7 +6631,8 @@ var a = { /* comment */ b }; =====================================output===================================== var a = { - /* comment */ b, + /* comment */ + b, } ================================================================================ @@ -6644,7 +6647,8 @@ var a = { /* comment */ b }; =====================================output===================================== var a = { - /* comment */ b, + /* comment */ + b, }; ================================================================================ diff --git a/tests/format/typescript/object-type/comments/11308.ts b/tests/format/typescript/object-type/comments/11308.ts new file mode 100644 index 000000000..56ee93159 --- /dev/null +++ b/tests/format/typescript/object-type/comments/11308.ts @@ -0,0 +1,35 @@ +o = {/** X */ + Y: "z", +} +o = {// X + Y: "z", +} +o = { +/** X */ + Y: "z", +} +o = { +/** X */ Y: "z", +} +o = {/** X */ + Y: "z", + /** X */ Z: 1, +} + +type T1 = {/** X */ + Y: "z", +} +type T2 = {// X + Y: "z", +} +type T3 = { +/** X */ + Y: "z", +} +type T4 = { +/** X */ Y: "z", +} +type T5 = {/** X */ + Y: "z", + /** X */ Z: 1, +} diff --git a/tests/format/typescript/object-type/comments/__snapshots__/format.test.js.snap b/tests/format/typescript/object-type/comments/__snapshots__/format.test.js.snap index 87bc8e47d..3dd0add4f 100644 --- a/tests/format/typescript/object-type/comments/__snapshots__/format.test.js.snap +++ b/tests/format/typescript/object-type/comments/__snapshots__/format.test.js.snap @@ -50,3 +50,90 @@ o = /** K */ { ================================================================================ `; + +exports[`11308.ts format 1`] = ` +====================================options===================================== +parsers: ["typescript"] + printWidth: 80 (default) | +=====================================input====================================== +o = {/** X */ + Y: "z", +} +o = {// X + Y: "z", +} +o = { +/** X */ + Y: "z", +} +o = { +/** X */ Y: "z", +} +o = {/** X */ + Y: "z", + /** X */ Z: 1, +} + +type T1 = {/** X */ + Y: "z", +} +type T2 = {// X + Y: "z", +} +type T3 = { +/** X */ + Y: "z", +} +type T4 = { +/** X */ Y: "z", +} +type T5 = {/** X */ + Y: "z", + /** X */ Z: 1, +} + +=====================================output===================================== +o = { + /** X */ + Y: "z", +}; +o = { + // X + Y: "z", +}; +o = { + /** X */ + Y: "z", +}; +o = { + /** X */ Y: "z", +}; +o = { + /** X */ + Y: "z", + /** X */ Z: 1, +}; + +type T1 = { + /** X */ + Y: "z"; +}; +type T2 = { + // X + Y: "z"; +}; +type T3 = { + /** X */ + Y: "z"; +}; +type T4 = { + /** X */ Y: "z"; +}; +type T5 = { + /** X */ + Y: "z"; + /** X */ Z: 1; +}; + +================================================================================ +`;