From e76e7461314b49dce3880484e749cfc1727d583e Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Wed, 10 Jun 2026 06:10:50 +0800 Subject: [PATCH] Remove extra parens around jsx (#19329) --- .../parentheses/needs-parentheses.js | 5 ++- .../__snapshots__/format.test.js.snap | 2 +- .../__snapshots__/format.test.js.snap | 24 +++++++++++++ tests/format/jsx/parentheses/format.test.js | 36 +++++++++++-------- 4 files changed, 50 insertions(+), 17 deletions(-) diff --git a/src/language-js/parentheses/needs-parentheses.js b/src/language-js/parentheses/needs-parentheses.js index ba4380214..b81000a15 100644 --- a/src/language-js/parentheses/needs-parentheses.js +++ b/src/language-js/parentheses/needs-parentheses.js @@ -868,7 +868,10 @@ function needsParentheses(path, options) { parent.type !== "TypeCastExpression" && parent.type !== "VariableDeclarator" && parent.type !== "YieldExpression" && - parent.type !== "MatchExpressionCase") + parent.type !== "MatchExpressionCase" && + !( + key === "declaration" && parent.type === "ExportDefaultDeclaration" + )) ); case "TSInstantiationExpression": diff --git a/tests/format/js/export-default/parentheses/__snapshots__/format.test.js.snap b/tests/format/js/export-default/parentheses/__snapshots__/format.test.js.snap index 9ecc857a0..59a560d59 100644 --- a/tests/format/js/export-default/parentheses/__snapshots__/format.test.js.snap +++ b/tests/format/js/export-default/parentheses/__snapshots__/format.test.js.snap @@ -511,7 +511,7 @@ parsers: ["babel", "flow", "typescript"] =====================================input====================================== export default (); =====================================output===================================== -export default (); +export default ; ================================================================================ `; diff --git a/tests/format/jsx/parentheses/__snapshots__/format.test.js.snap b/tests/format/jsx/parentheses/__snapshots__/format.test.js.snap index 5c182f616..23d1c30de 100644 --- a/tests/format/jsx/parentheses/__snapshots__/format.test.js.snap +++ b/tests/format/jsx/parentheses/__snapshots__/format.test.js.snap @@ -56,3 +56,27 @@ A( ================================================================================ `; + +exports[`snippet: #0 format 1`] = ` +====================================options===================================== +parsers: ["babel", "babel-flow", "babel-ts", "__babel_estree", "typescript", "flow", "meriyah", "acorn", "espree", "espree", "hermes", "oxc", "oxc-ts"] + printWidth: 80 (default) | +=====================================input====================================== +export default <> +=====================================output===================================== +export default <>; + +================================================================================ +`; + +exports[`snippet: #1 format 1`] = ` +====================================options===================================== +parsers: ["babel", "babel-flow", "babel-ts", "__babel_estree", "typescript", "flow", "meriyah", "acorn", "espree", "espree", "hermes", "oxc", "oxc-ts"] + printWidth: 80 (default) | +=====================================input====================================== +export default
+=====================================output===================================== +export default
; + +================================================================================ +`; diff --git a/tests/format/jsx/parentheses/format.test.js b/tests/format/jsx/parentheses/format.test.js index a6dfd8599..ebef618a7 100644 --- a/tests/format/jsx/parentheses/format.test.js +++ b/tests/format/jsx/parentheses/format.test.js @@ -1,15 +1,21 @@ -runFormatTest(import.meta, [ - "babel", - "babel-flow", - "babel-ts", - "__babel_estree", - "typescript", - "flow", - "meriyah", - "acorn", - "espree", - "espree", - "hermes", - "oxc", - "oxc-ts", -]); +runFormatTest( + { + importMeta: import.meta, + snippets: ["export default <>", "export default
"], + }, + [ + "babel", + "babel-flow", + "babel-ts", + "__babel_estree", + "typescript", + "flow", + "meriyah", + "acorn", + "espree", + "espree", + "hermes", + "oxc", + "oxc-ts", + ], +);