mirror of
https://github.com/danbulant/oxc
synced 2026-05-19 04:08:41 +00:00
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:
parent
b4c87e27a1
commit
30c0689dfc
1 changed files with 10 additions and 15 deletions
|
|
@ -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>) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue