diff --git a/packages/plugins/eslint-plugin-react-x/src/rules/no-unstable-context-value.spec.ts b/packages/plugins/eslint-plugin-react-x/src/rules/no-unstable-context-value.spec.ts index ec3cdfc5a5..ea4b4daba4 100644 --- a/packages/plugins/eslint-plugin-react-x/src/rules/no-unstable-context-value.spec.ts +++ b/packages/plugins/eslint-plugin-react-x/src/rules/no-unstable-context-value.spec.ts @@ -269,6 +269,6 @@ ruleTester.run(RULE_NAME, rule, { const Provider = ({foo, children}: {foo: {}, children: React.ReactNode}) => { return {children}; }; - ` + `, ], }); diff --git a/packages/utilities/var/src/get-variable-node.ts b/packages/utilities/var/src/get-variable-node.ts index 4c6261a15c..36c6aeb3fe 100644 --- a/packages/utilities/var/src/get-variable-node.ts +++ b/packages/utilities/var/src/get-variable-node.ts @@ -1,4 +1,3 @@ -import * as AST from "@eslint-react/ast"; import { _ } from "@eslint-react/eff"; import type { Variable } from "@typescript-eslint/scope-manager"; import { DefinitionType } from "@typescript-eslint/scope-manager"; @@ -25,9 +24,6 @@ export function getVariableNode(variable: Variable | _, at: number): case def.type === DefinitionType.ClassName && def.node.type === T.ClassDeclaration: return def.node; - case def.type === DefinitionType.Parameter - && AST.isFunction(def.node): - return def.node; case "init" in def.node && def.node.init != null && !("declarations" in def.node.init): diff --git a/packages/utilities/var/src/is-node-value-equal.ts b/packages/utilities/var/src/is-node-value-equal.ts index 66f5d76ec6..5083b67502 100644 --- a/packages/utilities/var/src/is-node-value-equal.ts +++ b/packages/utilities/var/src/is-node-value-equal.ts @@ -1,5 +1,6 @@ import * as AST from "@eslint-react/ast"; -import type { Scope } from "@typescript-eslint/scope-manager"; +import { _ } from "@eslint-react/eff"; +import { DefinitionType, type Scope, type Variable } from "@typescript-eslint/scope-manager"; import type { TSESTree } from "@typescript-eslint/types"; import { AST_NODE_TYPES as T } from "@typescript-eslint/types"; @@ -46,8 +47,8 @@ export function isNodeValueEqual( && b.type === T.Identifier: { const aVar = findVariable(a, aScope); const bVar = findVariable(b, bScope); - const aVarNode = getVariableNode(aVar, 0); - const bVarNode = getVariableNode(bVar, 0); + const aVarNode = getVariableNodeLoose(aVar, 0); + const bVarNode = getVariableNodeLoose(bVar, 0); const aVarNodeParent = aVarNode?.parent; const bVarNodeParent = bVarNode?.parent; const aDef = aVar?.defs.at(0); @@ -105,3 +106,12 @@ export function isNodeValueEqual( } } } + +function getVariableNodeLoose(variable: Variable | _, at: number): ReturnType { + if (variable == null) return _; + const node = getVariableNode(variable, at); + if (node != null) return node; + const def = variable.defs.at(at); + if (def?.type === DefinitionType.Parameter && AST.isFunction(def.node)) return def.node; + return _; +}