From 30c0689dfc4d76030216a1a2b8e3e61383205758 Mon Sep 17 00:00:00 2001 From: overlookmotel <557937+overlookmotel@users.noreply.github.com> Date: Thu, 16 Jan 2025 10:55:16 +0000 Subject: [PATCH] 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. --- .../oxc_linter/src/rules/oxc/no_map_spread.rs | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/crates/oxc_linter/src/rules/oxc/no_map_spread.rs b/crates/oxc_linter/src/rules/oxc/no_map_spread.rs index 70e10aeb067d1..c52d3a00587b3 100644 --- a/crates/oxc_linter/src/rules/oxc/no_map_spread.rs +++ b/crates/oxc_linter/src/rules/oxc/no_map_spread.rs @@ -5,8 +5,9 @@ use serde::{Deserialize, Serialize}; use oxc_ast::{ ast::{ ArrayExpression, ArrayExpressionElement, CallExpression, Expression, ObjectExpression, - ObjectPropertyKind, + ObjectPropertyKind, ReturnStatement, }, + visit::walk, AstKind, Visit, }; use oxc_diagnostics::{LabeledSpan, OxcDiagnostic}; @@ -637,21 +638,15 @@ impl<'a, F> Visit<'a> for SpreadInReturnVisitor<'a, '_, F> where F: FnMut(Spread<'a, '_>), { - #[inline] - fn enter_node(&mut self, kind: AstKind<'a>) { - if let AstKind::ReturnStatement(stmt) = kind { - self.is_in_return = true; - self.return_span = stmt.argument.as_ref().map(GetSpan::span); - } - } + fn visit_return_statement(&mut self, stmt: &ReturnStatement<'a>) { + self.is_in_return = true; + self.return_span = stmt.argument.as_ref().map(GetSpan::span); - #[inline] - fn leave_node(&mut self, kind: AstKind<'a>) { - if let AstKind::ReturnStatement(_) = kind { - self.is_in_return = false; - // NOTE: do not clear `return_span` here. We want to keep the last - // encountered `return` for reporting. - } + walk::walk_return_statement(self, stmt); + + self.is_in_return = false; + // NOTE: do not clear `return_span` here. We want to keep the last + // encountered `return` for reporting. } fn visit_expression(&mut self, expr: &Expression<'a>) {