From 289e0bfe768ccf2f8ffa5bac7c7cb347b3a7a107 Mon Sep 17 00:00:00 2001 From: austaras Date: Mon, 23 Oct 2023 07:04:25 +0800 Subject: [PATCH] fix(es/minifier): Always consider `reassigned` when multi inline --- .../swc_ecma_minifier/src/compress/optimize/inline.rs | 2 +- .../tests/fixture/issues/8161/input.js | 10 ++++++++++ .../tests/fixture/issues/8161/output.js | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 crates/swc_ecma_minifier/tests/fixture/issues/8161/input.js create mode 100644 crates/swc_ecma_minifier/tests/fixture/issues/8161/output.js diff --git a/crates/swc_ecma_minifier/src/compress/optimize/inline.rs b/crates/swc_ecma_minifier/src/compress/optimize/inline.rs index c3c7634a8a8c..fa64b9897c41 100644 --- a/crates/swc_ecma_minifier/src/compress/optimize/inline.rs +++ b/crates/swc_ecma_minifier/src/compress/optimize/inline.rs @@ -175,7 +175,7 @@ impl Optimizer<'_> { if is_inline_enabled && usage.declared_count == 1 && usage.assign_count == 1 - && (!usage.has_property_mutation || !usage.reassigned) + && !usage.reassigned && match init { Expr::Ident(Ident { sym, .. }) if &**sym == "eval" => false, diff --git a/crates/swc_ecma_minifier/tests/fixture/issues/8161/input.js b/crates/swc_ecma_minifier/tests/fixture/issues/8161/input.js new file mode 100644 index 000000000000..5d9bdb50dab0 --- /dev/null +++ b/crates/swc_ecma_minifier/tests/fixture/issues/8161/input.js @@ -0,0 +1,10 @@ +function run(flag, output = "a output") { + if (flag === "b") { + output = "b output"; + } + + console.log(output); +} + +run("a"); +run("b"); diff --git a/crates/swc_ecma_minifier/tests/fixture/issues/8161/output.js b/crates/swc_ecma_minifier/tests/fixture/issues/8161/output.js new file mode 100644 index 000000000000..9519378411a0 --- /dev/null +++ b/crates/swc_ecma_minifier/tests/fixture/issues/8161/output.js @@ -0,0 +1,4 @@ +function run(flag, output = "a output") { + "b" === flag && (output = "b output"), console.log(output); +} +run("a"), run("b");