From 07edf74c5861d61eac26bff62b57499dbeff43df Mon Sep 17 00:00:00 2001 From: Dunqing Date: Fri, 10 Jan 2025 08:28:06 +0800 Subject: [PATCH] perf(transformer/arrow-function): stop traversal at function as super() can't appear in a nested function (#8383) --- .../oxc_transformer/src/common/arrow_function_converter.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/crates/oxc_transformer/src/common/arrow_function_converter.rs b/crates/oxc_transformer/src/common/arrow_function_converter.rs index 82d89a97a..2cb342353 100644 --- a/crates/oxc_transformer/src/common/arrow_function_converter.rs +++ b/crates/oxc_transformer/src/common/arrow_function_converter.rs @@ -1209,8 +1209,11 @@ impl<'a> VisitMut<'a> for ConstructorBodyThisAfterSuperInserter<'a, '_> { } } } - // TODO: Stop traversal at a `Function` too. `super()` can't appear in a nested function, - // so no point traversing it. This is for performance, not correctness. + + #[inline] // `#[inline]` because is a no-op + fn visit_function(&mut self, _func: &mut Function<'a>, _flags: ScopeFlags) { + // `super()` can't appear in a nested function + } /// `super()` -> `super(); _this = this;` fn visit_statements(&mut self, statements: &mut ArenaVec<'a, Statement<'a>>) {