From 512740d33dfb8b2b8996d2da1070c6fa6071b79e Mon Sep 17 00:00:00 2001 From: overlookmotel <557937+overlookmotel@users.noreply.github.com> Date: Wed, 19 Jun 2024 12:16:30 +0000 Subject: [PATCH] refactor(transformer): move and simplify TS enum transform entry point (#3760) Move logic for TS enum transform into `enum.rs`. Also simplify the logic, using `Statement` enum variants directly. --- crates/oxc_transformer/src/typescript/enum.rs | 20 +++++++++++++ crates/oxc_transformer/src/typescript/mod.rs | 28 +------------------ 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/crates/oxc_transformer/src/typescript/enum.rs b/crates/oxc_transformer/src/typescript/enum.rs index b2a4b2fde6abe..2b79a3dd0477f 100644 --- a/crates/oxc_transformer/src/typescript/enum.rs +++ b/crates/oxc_transformer/src/typescript/enum.rs @@ -20,6 +20,26 @@ impl<'a> TypeScriptEnum<'a> { Self { ctx, enums: FxHashMap::default() } } + pub fn transform_statement(&mut self, stmt: &mut Statement<'a>, ctx: &TraverseCtx<'a>) { + let new_stmt = match stmt { + Statement::TSEnumDeclaration(ts_enum_decl) => { + self.transform_ts_enum(ts_enum_decl, false, ctx) + } + Statement::ExportNamedDeclaration(decl) => { + if let Some(Declaration::TSEnumDeclaration(ts_enum_decl)) = &decl.declaration { + self.transform_ts_enum(ts_enum_decl, true, ctx) + } else { + None + } + } + _ => None, + }; + + if let Some(new_stmt) = new_stmt { + *stmt = new_stmt; + } + } + /// ```TypeScript /// enum Foo { /// X = 1, diff --git a/crates/oxc_transformer/src/typescript/mod.rs b/crates/oxc_transformer/src/typescript/mod.rs index 3ef445f1d18aa..847d9fa665f01 100644 --- a/crates/oxc_transformer/src/typescript/mod.rs +++ b/crates/oxc_transformer/src/typescript/mod.rs @@ -152,33 +152,7 @@ impl<'a> TypeScript<'a> { } pub fn transform_statement(&mut self, stmt: &mut Statement<'a>, ctx: &TraverseCtx<'a>) { - let new_stmt = match stmt { - match_declaration!(Statement) => { - if let Declaration::TSEnumDeclaration(ts_enum_decl) = &stmt.to_declaration() { - self.r#enum.transform_ts_enum(ts_enum_decl, false, ctx) - } else { - None - } - } - match_module_declaration!(Statement) => { - if let ModuleDeclaration::ExportNamedDeclaration(decl) = - stmt.to_module_declaration_mut() - { - if let Some(Declaration::TSEnumDeclaration(ts_enum_decl)) = &decl.declaration { - self.r#enum.transform_ts_enum(ts_enum_decl, true, ctx) - } else { - None - } - } else { - None - } - } - _ => None, - }; - - if let Some(new_stmt) = new_stmt { - *stmt = new_stmt; - } + self.r#enum.transform_statement(stmt, ctx); } pub fn transform_if_statement(&mut self, stmt: &mut IfStatement<'a>) {