From e862cac91bc3024e5e736a348227f1cc49baba09 Mon Sep 17 00:00:00 2001 From: camc314 <18101008+camc314@users.noreply.github.com> Date: Sun, 28 Dec 2025 16:25:33 +0000 Subject: [PATCH] perf(semantic): inline `enter_kind` for `TSInterfaceHeritage` (#17430) Ref https://github.com/oxc-project/backlog/issues/72 --- crates/oxc_semantic/src/builder.rs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/crates/oxc_semantic/src/builder.rs b/crates/oxc_semantic/src/builder.rs index 64cd073d49880..eceb057db5cf5 100644 --- a/crates/oxc_semantic/src/builder.rs +++ b/crates/oxc_semantic/src/builder.rs @@ -2360,6 +2360,20 @@ impl<'a> Visit<'a> for SemanticBuilder<'a> { self.visit_arguments(&expr.arguments); self.leave_node(kind); } + + fn visit_ts_interface_heritage(&mut self, heritage: &TSInterfaceHeritage<'a>) { + let kind = AstKind::TSInterfaceHeritage(self.alloc(heritage)); + self.enter_node(kind); + // interface A extends B {} + // ^^^^^^^^^ + self.current_reference_flags = ReferenceFlags::Type; + self.visit_span(&heritage.span); + self.visit_expression(&heritage.expression); + if let Some(type_arguments) = &heritage.type_arguments { + self.visit_ts_type_parameter_instantiation(type_arguments); + } + self.leave_node(kind); + } } impl<'a> SemanticBuilder<'a> { @@ -2381,12 +2395,7 @@ impl<'a> SemanticBuilder<'a> { /* cfg */ match kind { - AstKind::TSInterfaceHeritage(_) - | AstKind::TSClassImplements(_) - | AstKind::TSTypeReference(_) => { - // interface A extends B {} - // ^^^^^^^^^ - // + AstKind::TSClassImplements(_) | AstKind::TSTypeReference(_) => { // class A implements B {} // ^^^^^^^^^^^^