diff --git a/crates/swc_ecma_minifier/src/pass/mangle_names/preserver.rs b/crates/swc_ecma_minifier/src/pass/mangle_names/preserver.rs index ac7984075e24..cdfe8045c080 100644 --- a/crates/swc_ecma_minifier/src/pass/mangle_names/preserver.rs +++ b/crates/swc_ecma_minifier/src/pass/mangle_names/preserver.rs @@ -101,7 +101,7 @@ impl Visit for Preserver { n.visit_children_with(self); if let Expr::Ident(i) = n { - if self.should_preserve || self.is_reserved(i) { + if self.should_preserve { self.preserved.insert(i.to_id()); } } @@ -141,7 +141,7 @@ impl Visit for Preserver { n.visit_children_with(self); if let Pat::Ident(i) = n { - if self.should_preserve || self.is_reserved(&i.id) { + if self.should_preserve { self.preserved.insert(i.to_id()); } } diff --git a/crates/swc_ecma_minifier/tests/fixture/issues/8622/config.json b/crates/swc_ecma_minifier/tests/fixture/issues/8622/config.json new file mode 100644 index 000000000000..dccb2dcc1f2c --- /dev/null +++ b/crates/swc_ecma_minifier/tests/fixture/issues/8622/config.json @@ -0,0 +1,4 @@ +{ + "defaults": true, + "passes": 2 +} diff --git a/crates/swc_ecma_minifier/tests/fixture/issues/8622/input.js b/crates/swc_ecma_minifier/tests/fixture/issues/8622/input.js new file mode 100644 index 000000000000..8113ce1e5b4e --- /dev/null +++ b/crates/swc_ecma_minifier/tests/fixture/issues/8622/input.js @@ -0,0 +1,15 @@ +export function foo(cond) { + let reserved = 1; + if (cond) { + reserved = 2; + } + return [reserved, bar(cond)]; +} + +function bar(cond) { + let reserved = 1; + if (cond) { + reserved = 2; + } + return reserved; +} diff --git a/crates/swc_ecma_minifier/tests/fixture/issues/8622/mangle.json b/crates/swc_ecma_minifier/tests/fixture/issues/8622/mangle.json new file mode 100644 index 000000000000..7a0990515db0 --- /dev/null +++ b/crates/swc_ecma_minifier/tests/fixture/issues/8622/mangle.json @@ -0,0 +1,3 @@ +{ + "reserved": ["reserved"] +} diff --git a/crates/swc_ecma_minifier/tests/fixture/issues/8622/output.js b/crates/swc_ecma_minifier/tests/fixture/issues/8622/output.js new file mode 100644 index 000000000000..207904d056f2 --- /dev/null +++ b/crates/swc_ecma_minifier/tests/fixture/issues/8622/output.js @@ -0,0 +1,7 @@ +export function foo(o) { + let t, e = 1; + return o && (e = 2), [ + e, + (t = 1, o && (t = 2), t) + ]; +}