From ec9a80aae0277f1346955d10fe348111050193bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Tue, 25 Oct 2022 13:00:16 +0900 Subject: [PATCH] feat(es/minifier): Respect options (#6245) --- .../swc_ecma_minifier/src/compress/optimize/sequences.rs | 9 ++++++++- crates/swc_ecma_minifier/tests/TODO.txt | 4 ---- crates/swc_ecma_minifier/tests/passing.txt | 4 ++++ .../terser/compress/collapse_vars/may_throw_2/output.js | 3 ++- .../compress/collapse_vars/reduce_vars_assign/output.js | 2 +- .../terser/compress/drop_unused/assign_binding/output.js | 3 +-- .../tests/terser/compress/issue_281/drop_fargs/output.js | 2 +- .../tests/terser/compress/issue_281/keep_fargs/output.js | 2 +- .../tests/terser/compress/sequences/func_def_1/output.js | 2 +- .../tests/terser/compress/sequences/func_def_3/output.js | 2 +- .../tests/terser/compress/sequences/func_def_4/output.js | 2 +- 11 files changed, 21 insertions(+), 14 deletions(-) diff --git a/crates/swc_ecma_minifier/src/compress/optimize/sequences.rs b/crates/swc_ecma_minifier/src/compress/optimize/sequences.rs index 783ccb54aa76..1bde493c78a6 100644 --- a/crates/swc_ecma_minifier/src/compress/optimize/sequences.rs +++ b/crates/swc_ecma_minifier/src/compress/optimize/sequences.rs @@ -747,7 +747,10 @@ where ) }; - if !self.options.sequences() && !e.span.has_mark(self.marks.synthesized_seq) { + if !self.options.sequences() + && !self.options.collapse_vars + && !e.span.has_mark(self.marks.synthesized_seq) + { log_abort!("sequences: Disabled && no mark"); return; } @@ -1877,6 +1880,10 @@ where /// console.log(++c) fn replace_seq_update(&mut self, a: &mut Mergable, b: &mut Expr) -> Result { + if !self.options.sequences() { + return Ok(false); + } + if let Mergable::Expr(a) = a { match a { Expr::Update(UpdateExpr { diff --git a/crates/swc_ecma_minifier/tests/TODO.txt b/crates/swc_ecma_minifier/tests/TODO.txt index d5a7a61af8c3..b74e66ff4f1b 100644 --- a/crates/swc_ecma_minifier/tests/TODO.txt +++ b/crates/swc_ecma_minifier/tests/TODO.txt @@ -16,10 +16,7 @@ class_properties/class_expression_constant/input.js class_properties/mangle_class_properties_keep_quoted/input.js class_properties/static_means_execution/input.js classes/pure_prop_assignment_for_classes/input.js -collapse_vars/cascade_conditional/input.js -collapse_vars/cascade_forin/input.js collapse_vars/cascade_statement/input.js -collapse_vars/cascade_switch/input.js collapse_vars/chained_1/input.js collapse_vars/chained_2/input.js collapse_vars/chained_3/input.js @@ -377,7 +374,6 @@ reduce_vars/redefine_farg_3/input.js reduce_vars/reduce_vars/input.js reduce_vars/regex_loop/input.js return_undefined/return_undefined/input.js -sequences/cascade_assignment_in_return/input.js sequences/delete_seq_4/input.js sequences/delete_seq_5/input.js sequences/for_init_var/input.js diff --git a/crates/swc_ecma_minifier/tests/passing.txt b/crates/swc_ecma_minifier/tests/passing.txt index 88035d522bef..1f706df8570a 100644 --- a/crates/swc_ecma_minifier/tests/passing.txt +++ b/crates/swc_ecma_minifier/tests/passing.txt @@ -121,9 +121,12 @@ collapse_vars/assignment/input.js collapse_vars/boolean_binary_1/input.js collapse_vars/boolean_binary_2/input.js collapse_vars/cascade_call/input.js +collapse_vars/cascade_conditional/input.js +collapse_vars/cascade_forin/input.js collapse_vars/cascade_if_1/input.js collapse_vars/cascade_if_2/input.js collapse_vars/cascade_return/input.js +collapse_vars/cascade_switch/input.js collapse_vars/collapse_rhs_array/input.js collapse_vars/collapse_rhs_boolean_1/input.js collapse_vars/collapse_rhs_boolean_2/input.js @@ -1413,6 +1416,7 @@ rename/mangle_catch_var_toplevel/input.js return_undefined/return_void/input.js sandbox/console_log/input.js sequences/call/input.js +sequences/cascade_assignment_in_return/input.js sequences/delete_seq_1/input.js sequences/delete_seq_2/input.js sequences/delete_seq_3/input.js diff --git a/crates/swc_ecma_minifier/tests/terser/compress/collapse_vars/may_throw_2/output.js b/crates/swc_ecma_minifier/tests/terser/compress/collapse_vars/may_throw_2/output.js index e7c7a44811f7..864538c5b791 100644 --- a/crates/swc_ecma_minifier/tests/terser/compress/collapse_vars/may_throw_2/output.js +++ b/crates/swc_ecma_minifier/tests/terser/compress/collapse_vars/may_throw_2/output.js @@ -1,7 +1,8 @@ function f(b) { try { var a = x(); - return (++b)(a); + ++b; + return b(a); } catch (e) {} console.log(b); } diff --git a/crates/swc_ecma_minifier/tests/terser/compress/collapse_vars/reduce_vars_assign/output.js b/crates/swc_ecma_minifier/tests/terser/compress/collapse_vars/reduce_vars_assign/output.js index 209ef4033b58..8c814260e554 100644 --- a/crates/swc_ecma_minifier/tests/terser/compress/collapse_vars/reduce_vars_assign/output.js +++ b/crates/swc_ecma_minifier/tests/terser/compress/collapse_vars/reduce_vars_assign/output.js @@ -1,4 +1,4 @@ !function() { var a = 1; - a = 0, console.log(a); + console.log(a = 0); }(); diff --git a/crates/swc_ecma_minifier/tests/terser/compress/drop_unused/assign_binding/output.js b/crates/swc_ecma_minifier/tests/terser/compress/drop_unused/assign_binding/output.js index 362446792294..7e776d10c235 100644 --- a/crates/swc_ecma_minifier/tests/terser/compress/drop_unused/assign_binding/output.js +++ b/crates/swc_ecma_minifier/tests/terser/compress/drop_unused/assign_binding/output.js @@ -1,4 +1,3 @@ function f() { - var a; - a = f.g, a(); + (0, f.g)(); } diff --git a/crates/swc_ecma_minifier/tests/terser/compress/issue_281/drop_fargs/output.js b/crates/swc_ecma_minifier/tests/terser/compress/issue_281/drop_fargs/output.js index 0d41fee2e525..abd1f2271cd9 100644 --- a/crates/swc_ecma_minifier/tests/terser/compress/issue_281/drop_fargs/output.js +++ b/crates/swc_ecma_minifier/tests/terser/compress/issue_281/drop_fargs/output.js @@ -1,3 +1,3 @@ var a = 1; -++a && a.var, a++; +a++, a && a.var, a++; console.log(a); diff --git a/crates/swc_ecma_minifier/tests/terser/compress/issue_281/keep_fargs/output.js b/crates/swc_ecma_minifier/tests/terser/compress/issue_281/keep_fargs/output.js index 0d41fee2e525..abd1f2271cd9 100644 --- a/crates/swc_ecma_minifier/tests/terser/compress/issue_281/keep_fargs/output.js +++ b/crates/swc_ecma_minifier/tests/terser/compress/issue_281/keep_fargs/output.js @@ -1,3 +1,3 @@ var a = 1; -++a && a.var, a++; +a++, a && a.var, a++; console.log(a); diff --git a/crates/swc_ecma_minifier/tests/terser/compress/sequences/func_def_1/output.js b/crates/swc_ecma_minifier/tests/terser/compress/sequences/func_def_1/output.js index 4084b304f5c8..741651e9cc66 100644 --- a/crates/swc_ecma_minifier/tests/terser/compress/sequences/func_def_1/output.js +++ b/crates/swc_ecma_minifier/tests/terser/compress/sequences/func_def_1/output.js @@ -1,4 +1,4 @@ function f() { - return f = 0, !!f; + return f = 0, false; } console.log(f()); diff --git a/crates/swc_ecma_minifier/tests/terser/compress/sequences/func_def_3/output.js b/crates/swc_ecma_minifier/tests/terser/compress/sequences/func_def_3/output.js index 0576ec2f37bd..1dfe57006b52 100644 --- a/crates/swc_ecma_minifier/tests/terser/compress/sequences/func_def_3/output.js +++ b/crates/swc_ecma_minifier/tests/terser/compress/sequences/func_def_3/output.js @@ -1,5 +1,5 @@ function f() { function g() {} - return g = 0, !!g; + return g = 0, false; } console.log(f()); diff --git a/crates/swc_ecma_minifier/tests/terser/compress/sequences/func_def_4/output.js b/crates/swc_ecma_minifier/tests/terser/compress/sequences/func_def_4/output.js index bc36d346fd48..fd75fba3ee67 100644 --- a/crates/swc_ecma_minifier/tests/terser/compress/sequences/func_def_4/output.js +++ b/crates/swc_ecma_minifier/tests/terser/compress/sequences/func_def_4/output.js @@ -1,6 +1,6 @@ function f() { function g() { - return (g = 0), !!g; + return g = 0, false; } return g(); }