mirror of
https://github.com/danbulant/oxc
synced 2026-05-19 12:19:15 +00:00
refactor(ast): replace recursion with loop (#3626)
Replace recursion with loop in `JSXMemberExpression::get_object_identifier`. Also add a mutable version `JSXMemberExpression::get_object_identifier_mut`.
This commit is contained in:
parent
85c3b83f5f
commit
0f925210af
1 changed files with 24 additions and 3 deletions
|
|
@ -133,9 +133,30 @@ pub struct JSXMemberExpression<'a> {
|
|||
|
||||
impl<'a> JSXMemberExpression<'a> {
|
||||
pub fn get_object_identifier(&self) -> &JSXIdentifier {
|
||||
match &self.object {
|
||||
JSXMemberExpressionObject::Identifier(ident) => ident,
|
||||
JSXMemberExpressionObject::MemberExpression(expr) => expr.get_object_identifier(),
|
||||
let mut member_expr = self;
|
||||
loop {
|
||||
match &member_expr.object {
|
||||
JSXMemberExpressionObject::Identifier(ident) => {
|
||||
break ident;
|
||||
}
|
||||
JSXMemberExpressionObject::MemberExpression(expr) => {
|
||||
member_expr = expr;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_object_identifier_mut(&mut self) -> &mut JSXIdentifier<'a> {
|
||||
let mut member_expr = self;
|
||||
loop {
|
||||
match &mut member_expr.object {
|
||||
JSXMemberExpressionObject::Identifier(ident) => {
|
||||
break &mut *ident;
|
||||
}
|
||||
JSXMemberExpressionObject::MemberExpression(expr) => {
|
||||
member_expr = expr;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue