From afb038e93e85986e5fc229d8db4a5d13154a5184 Mon Sep 17 00:00:00 2001 From: overlookmotel <557937+overlookmotel@users.noreply.github.com> Date: Fri, 30 Aug 2024 17:48:05 +0000 Subject: [PATCH] refactor(linter): `react/jsx_no_undef` use loop instead of recursion (#5347) --- crates/oxc_linter/src/rules/react/jsx_no_undef.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/crates/oxc_linter/src/rules/react/jsx_no_undef.rs b/crates/oxc_linter/src/rules/react/jsx_no_undef.rs index 55a738acb2635..7b81fead06a09 100644 --- a/crates/oxc_linter/src/rules/react/jsx_no_undef.rs +++ b/crates/oxc_linter/src/rules/react/jsx_no_undef.rs @@ -41,11 +41,15 @@ fn get_resolvable_ident<'a>(node: &'a JSXElementName<'a>) -> Option<&'a Identifi } } -fn get_member_ident<'a>(expr: &'a JSXMemberExpression<'a>) -> Option<&'a IdentifierReference> { - match &expr.object { - JSXMemberExpressionObject::Identifier(_) => None, - JSXMemberExpressionObject::IdentifierReference(ident) => Some(ident), - JSXMemberExpressionObject::MemberExpression(next_expr) => get_member_ident(next_expr), +fn get_member_ident<'a>(mut expr: &'a JSXMemberExpression<'a>) -> Option<&'a IdentifierReference> { + loop { + match &expr.object { + JSXMemberExpressionObject::Identifier(_) => return None, + JSXMemberExpressionObject::IdentifierReference(ident) => return Some(ident), + JSXMemberExpressionObject::MemberExpression(next_expr) => { + expr = next_expr; + } + } } }