From 8ff2c345ebe1425de518fe16f9e2de8efc7cb2dd Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Tue, 27 Jan 2026 22:19:28 +0800 Subject: [PATCH] Update internal ESLint rule (#18766) --- eslint.config.js | 4 ++-- ...ent-property-check-in-parentheses-check.js | 22 ++++++++++++++++++- .../test.js | 4 +++- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index b8f4720e4..5cd213d9d 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -411,9 +411,9 @@ const configs = [ }, }, { - files: ["src/language-js/needs-parens.js"], + files: ["src/language-js/parentheses/**"], rules: { - "prettier-internal-rules/better-parent-property-check-in-needs-parens": + "prettier-internal-rules/better-parent-property-check-in-parentheses-check": "error", }, }, diff --git a/scripts/tools/eslint-plugin-prettier-internal-rules/better-parent-property-check-in-parentheses-check.js b/scripts/tools/eslint-plugin-prettier-internal-rules/better-parent-property-check-in-parentheses-check.js index 2e5639eac..d5eb64799 100644 --- a/scripts/tools/eslint-plugin-prettier-internal-rules/better-parent-property-check-in-parentheses-check.js +++ b/scripts/tools/eslint-plugin-prettier-internal-rules/better-parent-property-check-in-parentheses-check.js @@ -2,7 +2,11 @@ import path from "node:path"; const parentPropertyCheckSelector = [ "FunctionDeclaration", - '[id.name="needsParens"]', + ":matches(", + ["needsParens", "needsParentheses"] + .map((name) => `[id.name="${name}"]`) + .join(","), + ")", " ", "BinaryExpression", ":matches(", @@ -85,6 +89,22 @@ export default { context.report({ node, messageId: MESSAGE_ID_KEY_CHECK_FIRST, + fix(fixer) { + const operatorToken = sourceCode.getTokenAfter( + node.left, + (token) => + token.type === "Punctuator" && token.value === node.operator, + ); + const left = sourceCode.text.slice( + node.range[0], + operatorToken.range[0], + ); + const right = sourceCode.text.slice( + operatorToken.range[1], + node.range[1], + ); + return fixer.replaceText(node, `${right} ${node.operator} ${left}`); + }, }); }, }; diff --git a/scripts/tools/eslint-plugin-prettier-internal-rules/test.js b/scripts/tools/eslint-plugin-prettier-internal-rules/test.js index bc2a0b768..d96b0fce9 100644 --- a/scripts/tools/eslint-plugin-prettier-internal-rules/test.js +++ b/scripts/tools/eslint-plugin-prettier-internal-rules/test.js @@ -37,7 +37,9 @@ test("better-parent-property-check-in-parentheses-check", { valid: ["function needsParens() {return parent.test === node;}"], invalid: [ { - code: 'return parent.type === "MemberExpression" && key === "object";', + code: 'return (( (( parent.type === "MemberExpression" )) && ((key === "object")) ));', + output: + 'return (( ((key === "object")) && (( parent.type === "MemberExpression" )) ));', errors: [{ message: "`key` comparison should be on left side." }], }, {