diff --git a/crates/oxc_minifier/src/ast_passes/mod.rs b/crates/oxc_minifier/src/ast_passes/mod.rs new file mode 100644 index 0000000000000..9fc44e9b4e3a5 --- /dev/null +++ b/crates/oxc_minifier/src/ast_passes/mod.rs @@ -0,0 +1,3 @@ +mod remove_parens; + +pub use remove_parens::RemoveParens; diff --git a/crates/oxc_minifier/src/compressor/prepass.rs b/crates/oxc_minifier/src/ast_passes/remove_parens.rs similarity index 87% rename from crates/oxc_minifier/src/compressor/prepass.rs rename to crates/oxc_minifier/src/ast_passes/remove_parens.rs index dc19b82931a47..3dd3f2288c64a 100644 --- a/crates/oxc_minifier/src/compressor/prepass.rs +++ b/crates/oxc_minifier/src/ast_passes/remove_parens.rs @@ -3,12 +3,13 @@ use oxc_ast::visit::walk_mut::{walk_expression_mut, walk_statements_mut}; #[allow(clippy::wildcard_imports)] use oxc_ast::{ast::*, AstBuilder, VisitMut}; +/// Remove Parenthesized Expression from the AST. #[derive(Clone, Copy)] -pub struct Prepass<'a> { +pub struct RemoveParens<'a> { ast: AstBuilder<'a>, } -impl<'a> Prepass<'a> { +impl<'a> RemoveParens<'a> { pub fn new(allocator: &'a Allocator) -> Self { Self { ast: AstBuilder::new(allocator) } } @@ -25,7 +26,7 @@ impl<'a> Prepass<'a> { } } -impl<'a> VisitMut<'a> for Prepass<'a> { +impl<'a> VisitMut<'a> for RemoveParens<'a> { fn visit_statements(&mut self, stmts: &mut Vec<'a, Statement<'a>>) { stmts.retain(|stmt| !matches!(stmt, Statement::EmptyStatement(_))); walk_statements_mut(self, stmts); diff --git a/crates/oxc_minifier/src/compressor/mod.rs b/crates/oxc_minifier/src/compressor/mod.rs index a414008e00d75..793982e067836 100644 --- a/crates/oxc_minifier/src/compressor/mod.rs +++ b/crates/oxc_minifier/src/compressor/mod.rs @@ -3,7 +3,6 @@ mod ast_util; mod fold; mod options; -mod prepass; mod util; use oxc_allocator::{Allocator, Vec}; @@ -20,20 +19,22 @@ use oxc_syntax::{ precedence::GetPrecedence, }; -pub use self::{options::CompressOptions, prepass::Prepass}; +use crate::ast_passes::RemoveParens; + +pub use self::options::CompressOptions; pub struct Compressor<'a> { ast: AstBuilder<'a>, options: CompressOptions, - prepass: Prepass<'a>, + prepass: RemoveParens<'a>, } const SPAN: Span = Span::new(0, 0); impl<'a> Compressor<'a> { pub fn new(allocator: &'a Allocator, options: CompressOptions) -> Self { - Self { ast: AstBuilder::new(allocator), options, prepass: Prepass::new(allocator) } + Self { ast: AstBuilder::new(allocator), options, prepass: RemoveParens::new(allocator) } } pub fn build(mut self, program: &mut Program<'a>) { diff --git a/crates/oxc_minifier/src/lib.rs b/crates/oxc_minifier/src/lib.rs index cdefae57c7fa4..60280baea0b74 100644 --- a/crates/oxc_minifier/src/lib.rs +++ b/crates/oxc_minifier/src/lib.rs @@ -1,5 +1,6 @@ //! ECMAScript Minifier +mod ast_passes; mod compressor; mod mangler; @@ -7,7 +8,8 @@ use oxc_allocator::Allocator; use oxc_ast::ast::Program; pub use crate::{ - compressor::{CompressOptions, Compressor, Prepass}, + ast_passes::RemoveParens, + compressor::{CompressOptions, Compressor}, mangler::ManglerBuilder, }; diff --git a/tasks/benchmark/benches/minifier.rs b/tasks/benchmark/benches/minifier.rs index bfb68e9a29cd2..c9ee9354b3b11 100644 --- a/tasks/benchmark/benches/minifier.rs +++ b/tasks/benchmark/benches/minifier.rs @@ -1,6 +1,6 @@ use oxc_allocator::Allocator; use oxc_benchmark::{criterion_group, criterion_main, BenchmarkId, Criterion}; -use oxc_minifier::{Minifier, MinifierOptions, Prepass}; +use oxc_minifier::{Minifier, MinifierOptions, RemoveParens}; use oxc_parser::Parser; use oxc_span::SourceType; use oxc_tasks_common::TestFiles; @@ -39,7 +39,7 @@ fn bench_passes(criterion: &mut Criterion) { let allocator = Allocator::default(); let program = Parser::new(&allocator, source_text, source_type).parse().program; let program = allocator.alloc(program); - b.iter(|| Prepass::new(&allocator).build(program)); + b.iter(|| RemoveParens::new(&allocator).build(program)); }, ); }