Skip to content

Commit

Permalink
refactor(linter/no-map-spread): remove Visit::enter_node usage (#8537)
Browse files Browse the repository at this point in the history
Use `Visit::visit_*` method instead of `Visit::enter_node` / `leave_node`. A step towards solving #8461, but also may improve performance.
  • Loading branch information
overlookmotel committed Jan 16, 2025
1 parent b4c87e2 commit 30c0689
Showing 1 changed file with 10 additions and 15 deletions.
25 changes: 10 additions & 15 deletions crates/oxc_linter/src/rules/oxc/no_map_spread.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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};
Expand Down Expand Up @@ -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>) {
Expand Down

0 comments on commit 30c0689

Please sign in to comment.