refactor(linter/no-map-spread): remove Visit::enter_node usage (#8537)

Use `Visit::visit_*` method instead of `Visit::enter_node` / `leave_node`. A step towards solving #8461, but also may improve performance.
This commit is contained in:
overlookmotel 2025-01-16 10:55:16 +00:00
parent b4c87e27a1
commit 30c0689dfc

View file

@ -5,8 +5,9 @@ use serde::{Deserialize, Serialize};
use oxc_ast::{ use oxc_ast::{
ast::{ ast::{
ArrayExpression, ArrayExpressionElement, CallExpression, Expression, ObjectExpression, ArrayExpression, ArrayExpressionElement, CallExpression, Expression, ObjectExpression,
ObjectPropertyKind, ObjectPropertyKind, ReturnStatement,
}, },
visit::walk,
AstKind, Visit, AstKind, Visit,
}; };
use oxc_diagnostics::{LabeledSpan, OxcDiagnostic}; use oxc_diagnostics::{LabeledSpan, OxcDiagnostic};
@ -637,21 +638,15 @@ impl<'a, F> Visit<'a> for SpreadInReturnVisitor<'a, '_, F>
where where
F: FnMut(Spread<'a, '_>), F: FnMut(Spread<'a, '_>),
{ {
#[inline] fn visit_return_statement(&mut self, stmt: &ReturnStatement<'a>) {
fn enter_node(&mut self, kind: AstKind<'a>) { self.is_in_return = true;
if let AstKind::ReturnStatement(stmt) = kind { self.return_span = stmt.argument.as_ref().map(GetSpan::span);
self.is_in_return = true;
self.return_span = stmt.argument.as_ref().map(GetSpan::span);
}
}
#[inline] walk::walk_return_statement(self, stmt);
fn leave_node(&mut self, kind: AstKind<'a>) {
if let AstKind::ReturnStatement(_) = kind { self.is_in_return = false;
self.is_in_return = false; // NOTE: do not clear `return_span` here. We want to keep the last
// NOTE: do not clear `return_span` here. We want to keep the last // encountered `return` for reporting.
// encountered `return` for reporting.
}
} }
fn visit_expression(&mut self, expr: &Expression<'a>) { fn visit_expression(&mut self, expr: &Expression<'a>) {