Skip to content

Commit aa9d789

Browse files
chore(es/minifier): Extend OrderedChain to support more node types (#11477)
## Summary - Extended `OrderedChain` in `hook_utils.rs` with additional node types for future hook consolidation - Added support for expression, declaration, export, and identifier hooks ## Test plan - [x] cargo check passes - [x] Library tests pass - [x] Fixture tests pass (2202 tests) 🤖 Generated with [Claude Code](https://claude.ai/claude-code) Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Donny/강동윤 <kdy1@users.noreply.github.com>
1 parent 9113fff commit aa9d789

File tree

1 file changed

+43
-1
lines changed

1 file changed

+43
-1
lines changed

crates/swc_ecma_minifier/src/hook_utils.rs

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ where
4949
A: VisitMutHook<C>,
5050
B: VisitMutHook<C>,
5151
{
52+
// Name mangling hooks
5253
chained_method!(enter_private_name, exit_private_name, PrivateName, C);
5354

5455
chained_method!(enter_labeled_stmt, exit_labeled_stmt, LabeledStmt, C);
@@ -57,23 +58,64 @@ where
5758

5859
chained_method!(enter_break_stmt, exit_break_stmt, BreakStmt, C);
5960

61+
// Top-level traversal hooks
6062
chained_method!(enter_program, exit_program, Program, C);
6163

6264
chained_method!(enter_module, exit_module, Module, C);
6365

6466
chained_method!(enter_script, exit_script, Script, C);
6567

68+
// Statement hooks
6669
chained_method!(enter_stmt, exit_stmt, Stmt, C);
6770

6871
chained_method!(enter_stmts, exit_stmts, Vec<Stmt>, C);
6972

73+
chained_method!(enter_block_stmt, exit_block_stmt, BlockStmt, C);
74+
75+
// Module item hooks
7076
chained_method!(enter_module_item, exit_module_item, ModuleItem, C);
7177

7278
chained_method!(enter_module_items, exit_module_items, Vec<ModuleItem>, C);
7379

80+
// Expression hooks
7481
chained_method!(enter_expr, exit_expr, Expr, C);
7582

76-
chained_method!(enter_block_stmt, exit_block_stmt, BlockStmt, C);
83+
chained_method!(enter_call_expr, exit_call_expr, CallExpr, C);
84+
85+
chained_method!(enter_new_expr, exit_new_expr, NewExpr, C);
86+
87+
chained_method!(enter_tagged_tpl, exit_tagged_tpl, TaggedTpl, C);
88+
89+
// Declaration hooks
90+
chained_method!(enter_var_decl, exit_var_decl, VarDecl, C);
91+
92+
chained_method!(enter_var_declarator, exit_var_declarator, VarDeclarator, C);
93+
94+
chained_method!(enter_fn_decl, exit_fn_decl, FnDecl, C);
95+
96+
chained_method!(enter_fn_expr, exit_fn_expr, FnExpr, C);
97+
98+
chained_method!(enter_function, exit_function, Function, C);
99+
100+
// Export hooks
101+
chained_method!(
102+
enter_export_default_decl,
103+
exit_export_default_decl,
104+
ExportDefaultDecl,
105+
C
106+
);
107+
108+
chained_method!(
109+
enter_export_default_expr,
110+
exit_export_default_expr,
111+
ExportDefaultExpr,
112+
C
113+
);
114+
115+
chained_method!(enter_export_decl, exit_export_decl, ExportDecl, C);
116+
117+
// Identifier hooks
118+
chained_method!(enter_ident, exit_ident, Ident, C);
77119
}
78120

79121
/// A builder for composing hooks in a fluent API style.

0 commit comments

Comments
 (0)