diff --git a/crates/oxc_ast/src/ast/js.rs b/crates/oxc_ast/src/ast/js.rs index 3cc7b53cd29b7..7fe22e22e1299 100644 --- a/crates/oxc_ast/src/ast/js.rs +++ b/crates/oxc_ast/src/ast/js.rs @@ -1300,7 +1300,7 @@ pub struct TryStatement<'a> { } #[visited_node] -#[scope(flags(ScopeFlags::CatchClause))] +#[scope(flags(ScopeFlags::CatchClause), if(self.param.is_some()))] #[derive(Debug)] #[cfg_attr(feature = "serialize", derive(Serialize, Tsify))] #[cfg_attr(feature = "serialize", serde(tag = "type"))] diff --git a/crates/oxc_ast/src/generated/visit.rs b/crates/oxc_ast/src/generated/visit.rs index 79a63005754d4..9f99303bb8069 100644 --- a/crates/oxc_ast/src/generated/visit.rs +++ b/crates/oxc_ast/src/generated/visit.rs @@ -3701,12 +3701,17 @@ pub mod walk { pub fn walk_catch_clause<'a, V: Visit<'a>>(visitor: &mut V, it: &CatchClause<'a>) { let kind = AstKind::CatchClause(visitor.alloc(it)); visitor.enter_node(kind); - visitor.enter_scope(ScopeFlags::CatchClause, &it.scope_id); + let scope_events_cond = it.param.is_some(); + if scope_events_cond { + visitor.enter_scope(ScopeFlags::CatchClause, &it.scope_id); + } if let Some(param) = &it.param { visitor.visit_catch_parameter(param); } visitor.visit_block_statement(&it.body); - visitor.leave_scope(); + if scope_events_cond { + visitor.leave_scope(); + } visitor.leave_node(kind); } diff --git a/crates/oxc_ast/src/generated/visit_mut.rs b/crates/oxc_ast/src/generated/visit_mut.rs index 37343df6f46fe..6879e917e9a60 100644 --- a/crates/oxc_ast/src/generated/visit_mut.rs +++ b/crates/oxc_ast/src/generated/visit_mut.rs @@ -3913,12 +3913,17 @@ pub mod walk_mut { pub fn walk_catch_clause<'a, V: VisitMut<'a>>(visitor: &mut V, it: &mut CatchClause<'a>) { let kind = AstType::CatchClause; visitor.enter_node(kind); - visitor.enter_scope(ScopeFlags::CatchClause, &it.scope_id); + let scope_events_cond = it.param.is_some(); + if scope_events_cond { + visitor.enter_scope(ScopeFlags::CatchClause, &it.scope_id); + } if let Some(param) = &mut it.param { visitor.visit_catch_parameter(param); } visitor.visit_block_statement(&mut it.body); - visitor.leave_scope(); + if scope_events_cond { + visitor.leave_scope(); + } visitor.leave_node(kind); }