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 _;
+}