diff --git a/crates/rspack_javascript_compiler/src/ast.rs b/crates/rspack_javascript_compiler/src/ast.rs index be7d3fca534f..cc7cf0880f3d 100644 --- a/crates/rspack_javascript_compiler/src/ast.rs +++ b/crates/rspack_javascript_compiler/src/ast.rs @@ -5,7 +5,6 @@ use swc_core::{ common::{GLOBALS, Globals, Mark, SourceMap, errors::Handler, sync::Lrc, util::take::Take}, ecma::{ ast::{Module, Program as SwcProgram}, - transforms::base::helpers::{HELPERS, HelperData, Helpers}, visit::{Fold, FoldWith, Visit, VisitMut, VisitMutWith, VisitWith}, }, }; @@ -73,7 +72,6 @@ impl Take for Program { /// Swc transform context pub struct Context { pub globals: Globals, - pub helpers: HelperData, pub top_level_mark: Mark, pub unresolved_mark: Mark, pub source_map: Arc, @@ -83,13 +81,10 @@ impl Context { pub fn new(source_map: Arc, globals: Option) -> Self { let globals = globals.unwrap_or_default(); // generate preset mark & helpers - let (top_level_mark, unresolved_mark, helpers) = GLOBALS.set(&globals, || { - (Mark::new(), Mark::new(), Helpers::new(true).data()) - }); + let (top_level_mark, unresolved_mark) = GLOBALS.set(&globals, || (Mark::new(), Mark::new())); Self { globals, - helpers, top_level_mark, unresolved_mark, source_map, @@ -100,7 +95,6 @@ impl Context { impl std::fmt::Debug for Context { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.debug_struct("Context") - .field("helpers", &self.helpers) .field("top_level_mark", &self.top_level_mark) .field("unresolved_mark", &self.unresolved_mark) .finish() @@ -163,9 +157,7 @@ impl Ast { F: FnOnce(&mut Program, &Context) -> R, { let Self { program, context } = self; - GLOBALS.set(&context.globals, || { - HELPERS.set(&Helpers::from_data(context.helpers), || f(program, context)) - }) + GLOBALS.set(&context.globals, || f(program, context)) } pub fn transform_with_handler(&mut self, cm: Lrc, f: F) -> Result @@ -184,8 +176,6 @@ impl Ast { F: FnOnce(&Program, &Context) -> R, { let Self { program, context } = self; - GLOBALS.set(&context.globals, || { - HELPERS.set(&Helpers::from_data(context.helpers), || f(program, context)) - }) + GLOBALS.set(&context.globals, || f(program, context)) } } diff --git a/crates/rspack_javascript_compiler/src/compiler/minify.rs b/crates/rspack_javascript_compiler/src/compiler/minify.rs index a7a690d1cb31..84165e11f655 100644 --- a/crates/rspack_javascript_compiler/src/compiler/minify.rs +++ b/crates/rspack_javascript_compiler/src/compiler/minify.rs @@ -21,7 +21,6 @@ use swc_core::{ parser::{EsSyntax, Syntax}, transforms::base::{ fixer::{fixer, paren_remover}, - helpers::{self, Helpers}, hygiene::hygiene, resolver, }, @@ -139,29 +138,27 @@ impl JavaScriptCompiler { let is_mangler_enabled = min_opts.mangle.is_some(); - let program = helpers::HELPERS.set(&Helpers::new(false), || { - HANDLER.set(handler, || { - let program = program - .apply(&mut resolver(unresolved_mark, top_level_mark, false)) - .apply(&mut paren_remover(Some(&comments as &dyn Comments))); - let mut program = swc_ecma_minifier::optimize( - program, - self.cm.clone(), - Some(&comments), - None, - &min_opts, - &swc_ecma_minifier::option::ExtraOptions { - unresolved_mark, - top_level_mark, - mangle_name_cache: None, - }, - ); - - if !is_mangler_enabled { - program.visit_mut_with(&mut hygiene()) - } - program.apply(&mut fixer(Some(&comments as &dyn Comments))) - }) + let program = HANDLER.set(handler, || { + let program = program + .apply(&mut resolver(unresolved_mark, top_level_mark, false)) + .apply(&mut paren_remover(Some(&comments as &dyn Comments))); + let mut program = swc_ecma_minifier::optimize( + program, + self.cm.clone(), + Some(&comments), + None, + &min_opts, + &swc_ecma_minifier::option::ExtraOptions { + unresolved_mark, + top_level_mark, + mangle_name_cache: None, + }, + ); + + if !is_mangler_enabled { + program.visit_mut_with(&mut hygiene()) + } + program.apply(&mut fixer(Some(&comments as &dyn Comments))) }); if let Some(op) = comments_op {