refactor(minifier): align ast pass names with closure compiler (#5908)

This commit is contained in:
Boshen 2024-09-20 05:20:07 +00:00
parent f4fac0f488
commit 144611ef49
12 changed files with 41 additions and 44 deletions

View file

@ -8,13 +8,13 @@ use crate::{CompressOptions, CompressorPass};
///
/// `var a; var b = 1; var c = 2` => `var a, b = 1; c = 2`
/// TODO: `a = null; b = null;` => `a = b = null`
pub struct Collapse {
pub struct CollapseVariableDeclarations {
options: CompressOptions,
}
impl<'a> CompressorPass<'a> for Collapse {}
impl<'a> CompressorPass<'a> for CollapseVariableDeclarations {}
impl<'a> Traverse<'a> for Collapse {
impl<'a> Traverse<'a> for CollapseVariableDeclarations {
fn enter_statements(&mut self, stmts: &mut Vec<'a, Statement<'a>>, ctx: &mut TraverseCtx<'a>) {
if self.options.join_vars {
self.join_vars(stmts, ctx);
@ -22,7 +22,7 @@ impl<'a> Traverse<'a> for Collapse {
}
}
impl<'a> Collapse {
impl<'a> CollapseVariableDeclarations {
pub fn new(options: CompressOptions) -> Self {
Self { options }
}

View file

@ -1,16 +1,16 @@
mod collapse;
mod fold_constants;
mod minimize_conditions;
mod remove_dead_code;
mod collapse_variable_declarations;
mod peephole_fold_constants;
mod peephole_minimize_conditions;
mod peephole_remove_dead_code;
mod peephole_substitute_alternate_syntax;
mod remove_syntax;
mod substitute_alternate_syntax;
pub use collapse::Collapse;
pub use fold_constants::FoldConstants;
pub use minimize_conditions::MinimizeConditions;
pub use remove_dead_code::RemoveDeadCode;
pub use collapse_variable_declarations::CollapseVariableDeclarations;
pub use peephole_fold_constants::PeepholeFoldConstants;
pub use peephole_minimize_conditions::PeepholeMinimizeConditions;
pub use peephole_remove_dead_code::PeepholeRemoveDeadCode;
pub use peephole_substitute_alternate_syntax::PeepholeSubstituteAlternateSyntax;
pub use remove_syntax::RemoveSyntax;
pub use substitute_alternate_syntax::SubstituteAlternateSyntax;
use oxc_ast::ast::Program;
use oxc_semantic::{ScopeTree, SymbolTable};

View file

@ -21,19 +21,19 @@ use crate::{
/// Constant Folding
///
/// <https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/PeepholeFoldConstants.java>
pub struct FoldConstants {
pub struct PeepholeFoldConstants {
evaluate: bool,
}
impl<'a> CompressorPass<'a> for FoldConstants {}
impl<'a> CompressorPass<'a> for PeepholeFoldConstants {}
impl<'a> Traverse<'a> for FoldConstants {
impl<'a> Traverse<'a> for PeepholeFoldConstants {
fn exit_expression(&mut self, expr: &mut Expression<'a>, ctx: &mut TraverseCtx<'a>) {
self.fold_expression(expr, ctx);
}
}
impl<'a> FoldConstants {
impl<'a> PeepholeFoldConstants {
pub fn new() -> Self {
Self { evaluate: false }
}

View file

@ -10,17 +10,17 @@ use crate::{node_util::NodeUtil, tri::Tri, CompressorPass};
/// with `? :` and short-circuit binary operators.
///
/// <https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/PeepholeMinimizeConditions.java>
pub struct MinimizeConditions;
pub struct PeepholeMinimizeConditions;
impl<'a> CompressorPass<'a> for MinimizeConditions {}
impl<'a> CompressorPass<'a> for PeepholeMinimizeConditions {}
impl<'a> Traverse<'a> for MinimizeConditions {
impl<'a> Traverse<'a> for PeepholeMinimizeConditions {
fn exit_expression(&mut self, expr: &mut Expression<'a>, ctx: &mut TraverseCtx<'a>) {
self.fold_expression(expr, ctx);
}
}
impl<'a> MinimizeConditions {
impl<'a> PeepholeMinimizeConditions {
pub fn new() -> Self {
Self
}

View file

@ -10,11 +10,11 @@ use crate::{keep_var::KeepVar, node_util::NodeUtil, tri::Tri, CompressorPass};
/// Terser option: `dead_code: true`.
///
/// See `KeepVar` at the end of this file for `var` hoisting logic.
pub struct RemoveDeadCode;
pub struct PeepholeRemoveDeadCode;
impl<'a> CompressorPass<'a> for RemoveDeadCode {}
impl<'a> CompressorPass<'a> for PeepholeRemoveDeadCode {}
impl<'a> Traverse<'a> for RemoveDeadCode {
impl<'a> Traverse<'a> for PeepholeRemoveDeadCode {
fn enter_statement(&mut self, stmt: &mut Statement<'a>, ctx: &mut TraverseCtx<'a>) {
Self::fold_if_statement(stmt, ctx);
}
@ -25,7 +25,7 @@ impl<'a> Traverse<'a> for RemoveDeadCode {
}
}
impl<'a> RemoveDeadCode {
impl<'a> PeepholeRemoveDeadCode {
pub fn new() -> Self {
Self {}
}

View file

@ -11,14 +11,14 @@ use crate::{node_util::NodeUtil, CompressOptions, CompressorPass};
/// A peephole optimization that minimizes code by simplifying conditional
/// expressions, replacing IFs with HOOKs, replacing object constructors
/// with literals, and simplifying returns.
pub struct SubstituteAlternateSyntax {
pub struct PeepholeSubstituteAlternateSyntax {
options: CompressOptions,
in_define_export: bool,
}
impl<'a> CompressorPass<'a> for SubstituteAlternateSyntax {}
impl<'a> CompressorPass<'a> for PeepholeSubstituteAlternateSyntax {}
impl<'a> Traverse<'a> for SubstituteAlternateSyntax {
impl<'a> Traverse<'a> for PeepholeSubstituteAlternateSyntax {
fn enter_statement(&mut self, stmt: &mut Statement<'a>, _ctx: &mut TraverseCtx<'a>) {
self.compress_block(stmt);
// self.compress_while(stmt);
@ -81,7 +81,7 @@ impl<'a> Traverse<'a> for SubstituteAlternateSyntax {
}
}
impl<'a> SubstituteAlternateSyntax {
impl<'a> PeepholeSubstituteAlternateSyntax {
pub fn new(options: CompressOptions) -> Self {
Self { options, in_define_export: false }
}

View file

@ -5,8 +5,8 @@ use oxc_traverse::TraverseCtx;
use crate::{
ast_passes::{
Collapse, FoldConstants, MinimizeConditions, RemoveDeadCode, RemoveSyntax,
SubstituteAlternateSyntax,
CollapseVariableDeclarations, PeepholeFoldConstants, PeepholeMinimizeConditions,
PeepholeRemoveDeadCode, PeepholeSubstituteAlternateSyntax, RemoveSyntax,
},
CompressOptions, CompressorPass,
};
@ -53,31 +53,31 @@ impl<'a> Compressor<'a> {
fn minimize_conditions(&self, program: &mut Program<'a>, ctx: &mut TraverseCtx<'a>) {
if self.options.minimize_conditions {
MinimizeConditions::new().build(program, ctx);
PeepholeMinimizeConditions::new().build(program, ctx);
}
}
fn fold_constants(&self, program: &mut Program<'a>, ctx: &mut TraverseCtx<'a>) {
if self.options.fold_constants {
FoldConstants::new().with_evaluate(self.options.evaluate).build(program, ctx);
PeepholeFoldConstants::new().with_evaluate(self.options.evaluate).build(program, ctx);
}
}
fn substitute_alternate_syntax(&self, program: &mut Program<'a>, ctx: &mut TraverseCtx<'a>) {
if self.options.substitute_alternate_syntax {
SubstituteAlternateSyntax::new(self.options).build(program, ctx);
PeepholeSubstituteAlternateSyntax::new(self.options).build(program, ctx);
}
}
fn remove_dead_code(&self, program: &mut Program<'a>, ctx: &mut TraverseCtx<'a>) {
if self.options.remove_dead_code {
RemoveDeadCode::new().build(program, ctx);
PeepholeRemoveDeadCode::new().build(program, ctx);
}
}
fn collapse(&self, program: &mut Program<'a>, ctx: &mut TraverseCtx<'a>) {
if self.options.collapse {
Collapse::new(self.options).build(program, ctx);
CollapseVariableDeclarations::new(self.options).build(program, ctx);
}
}
}

View file

@ -16,10 +16,7 @@ use oxc_ast::ast::Program;
use oxc_mangler::Mangler;
pub use crate::{
ast_passes::{CompressorPass, RemoveDeadCode, RemoveSyntax},
compressor::Compressor,
options::CompressOptions,
plugins::*,
ast_passes::CompressorPass, compressor::Compressor, options::CompressOptions, plugins::*,
};
#[derive(Debug, Clone, Copy)]

View file

@ -1,11 +1,11 @@
mod collapse_variable_declarations;
mod dead_code_elimination;
mod fold_conditions;
mod fold_constants;
mod minimize_conditions;
mod peephole_fold_constants;
mod peephole_minimize_conditions;
mod peephole_substitute_alternate_syntax;
mod remove_syntax;
mod reorder_constant_expression;
mod substitute_alternate_syntax;
// Oxc Integration Tests