From 6ea0f9c3635d3e20b9a6aa13d6745086c7c10a3b Mon Sep 17 00:00:00 2001 From: CPunisher <1343316114@qq.com> Date: Mon, 15 Jul 2024 13:11:06 +0800 Subject: [PATCH 1/2] Remove opt of array pat --- .../src/simplify/branch/mod.rs | 28 +------------------ 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/crates/swc_ecma_transforms_optimization/src/simplify/branch/mod.rs b/crates/swc_ecma_transforms_optimization/src/simplify/branch/mod.rs index 6c248ec58ec7..e6adb6013493 100644 --- a/crates/swc_ecma_transforms_optimization/src/simplify/branch/mod.rs +++ b/crates/swc_ecma_transforms_optimization/src/simplify/branch/mod.rs @@ -1,4 +1,4 @@ -use std::{borrow::Cow, cmp::min, iter::once, mem::take}; +use std::{borrow::Cow, iter::once, mem::take}; use swc_common::{ pass::{CompilerPass, Repeated}, @@ -75,32 +75,6 @@ impl Parallel for Remover { impl VisitMut for Remover { standard_only_visit_mut!(); - fn visit_mut_array_pat(&mut self, p: &mut ArrayPat) { - p.visit_mut_children_with(self); - - let mut preserved = None; - let len = p.elems.len(); - for (i, p) in p.elems.iter().enumerate() { - let can_be_removed = match p { - Some(Pat::Array(ref p)) if p.elems.is_empty() => true, - Some(Pat::Object(ref p)) if p.props.is_empty() => true, - _ => false, - }; - - if !can_be_removed { - preserved = Some(min(i + 1, len)) - } - } - - if let Some(i) = preserved { - if cfg!(feature = "debug") { - debug!("Removing elements of an array pattern"); - } - - p.elems.drain(i..); - } - } - fn visit_mut_expr(&mut self, e: &mut Expr) { e.visit_mut_children_with(self); From 0d5c575d6ce6917acee1e0dcb7f1242c6fd7e0dc Mon Sep 17 00:00:00 2001 From: CPunisher <1343316114@qq.com> Date: Mon, 15 Jul 2024 13:41:06 +0800 Subject: [PATCH 2/2] Remove testcase --- .../src/simplify/branch/tests.rs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/crates/swc_ecma_transforms_optimization/src/simplify/branch/tests.rs b/crates/swc_ecma_transforms_optimization/src/simplify/branch/tests.rs index e01c55468fa4..a403e15a2d10 100644 --- a/crates/swc_ecma_transforms_optimization/src/simplify/branch/tests.rs +++ b/crates/swc_ecma_transforms_optimization/src/simplify/branch/tests.rs @@ -1432,16 +1432,6 @@ fn test_empty_pattern_in_for_of_loop_not_removed() { test_same("for ({} of foo());"); } -#[test] -fn test_empty_slot_in_array_pattern_removed() { - test("[,,] = foo();", "foo()"); - test("[a,b,,] = foo();", "[a,b] = foo();"); - test("[a,[],b,[],[]] = foo();", "[a,[],b] = foo();"); - test("[a,{},b,{},{}] = foo();", "[a,{},b] = foo();"); - test("function f([,,,]) {}", "function f([]) {}"); - test_same("[[], [], [], ...rest] = foo()"); -} - #[test] #[ignore] fn test_empty_slot_in_array_pattern_with_default_value_maybe_removed_1() {