diff --git a/changelog_unreleased/javascript/9741.md b/changelog_unreleased/javascript/9741.md new file mode 100644 index 000000000000..94caafe8cbba --- /dev/null +++ b/changelog_unreleased/javascript/9741.md @@ -0,0 +1,27 @@ +#### Fix formatting for AssignmentExpression with ClassExpression (#9741 by @sosukesuzuki) + + +```js +// Input +module.exports = class A extends B { + method() { + console.log("foo"); + } +}; + +// Prettier stable +module.exports = class A extends ( + B +) { + method() { + console.log("foo"); + } +}; + +// Prettier master +module.exports = class A extends B { + method() { + console.log("foo"); + } +}; +``` diff --git a/src/language-js/print/class.js b/src/language-js/print/class.js index 2e48dfeb1884..ecefce26c9d5 100644 --- a/src/language-js/print/class.js +++ b/src/language-js/print/class.js @@ -131,13 +131,13 @@ function printList(path, options, print, listName) { function printSuperClass(path, options, print) { const printed = path.call(print, "superClass"); const parent = path.getParentNode(); - if (parent && parent.type === "AssignmentExpression") { - return concat([ - ifBreak("("), - indent(concat([softline, printed])), - softline, - ifBreak(")"), - ]); + if (parent.type === "AssignmentExpression") { + return group( + ifBreak( + concat(["(", indent(concat([softline, printed])), softline, ")"]), + printed + ) + ); } return printed; } diff --git a/tests/js/classes/__snapshots__/jsfmt.spec.js.snap b/tests/js/classes/__snapshots__/jsfmt.spec.js.snap index 2025489e6c3d..44873cab8812 100644 --- a/tests/js/classes/__snapshots__/jsfmt.spec.js.snap +++ b/tests/js/classes/__snapshots__/jsfmt.spec.js.snap @@ -32,6 +32,12 @@ foo = class extends aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee.ffffffff.gggggg } }; +module.exports = class A extends B { + method () { + console.log("foo"); + } +}; + =====================================output===================================== aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee.ffffffff.gggggggg2 = class extends ( aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee.ffffffff.gggggggg1 @@ -41,9 +47,7 @@ aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee.ffffffff.gggggggg2 = class extends } }; -foo = class extends ( - bar -) { +foo = class extends bar { method() { console.log("foo"); } @@ -65,6 +69,12 @@ foo = class extends ( } }; +module.exports = class A extends B { + method() { + console.log("foo"); + } +}; + ================================================================================ `; diff --git a/tests/js/classes/assignment.js b/tests/js/classes/assignment.js index dc0f6c4b6ea1..56f7348cc83a 100644 --- a/tests/js/classes/assignment.js +++ b/tests/js/classes/assignment.js @@ -23,3 +23,9 @@ foo = class extends aaaaaaaa.bbbbbbbb.cccccccc.dddddddd.eeeeeeee.ffffffff.gggggg console.log("foo"); } }; + +module.exports = class A extends B { + method () { + console.log("foo"); + } +};