diff --git a/.changeset/kind-feet-swim.md b/.changeset/kind-feet-swim.md new file mode 100644 index 000000000000..fb3840e878dd --- /dev/null +++ b/.changeset/kind-feet-swim.md @@ -0,0 +1,6 @@ +--- +swc_core: patch +swc_ecma_minifier: patch +--- + +fix(es/minifier): Set param type to unknown diff --git a/crates/swc_ecma_minifier/src/program_data.rs b/crates/swc_ecma_minifier/src/program_data.rs index cc2053a91c8a..df8e6c3dfb17 100644 --- a/crates/swc_ecma_minifier/src/program_data.rs +++ b/crates/swc_ecma_minifier/src/program_data.rs @@ -449,7 +449,12 @@ impl Storage for ProgramData { } v.var_initialized |= init_type.is_some(); - v.merged_var_type.merge(init_type); + + if ctx.in_pat_of_param { + v.merged_var_type = Some(Value::Unknown); + } else { + v.merged_var_type.merge(init_type); + } v.declared_count += 1; v.declared = true; diff --git a/crates/swc_ecma_minifier/tests/fixture/issues/8718/7/input.js b/crates/swc_ecma_minifier/tests/fixture/issues/8718/7/input.js new file mode 100644 index 000000000000..3d2b497fc358 --- /dev/null +++ b/crates/swc_ecma_minifier/tests/fixture/issues/8718/7/input.js @@ -0,0 +1,6 @@ +export function foo(a) { + a += 1; + a += 2; + + return a; +} diff --git a/crates/swc_ecma_minifier/tests/fixture/issues/8718/7/output.js b/crates/swc_ecma_minifier/tests/fixture/issues/8718/7/output.js new file mode 100644 index 000000000000..3460da26e4d4 --- /dev/null +++ b/crates/swc_ecma_minifier/tests/fixture/issues/8718/7/output.js @@ -0,0 +1,3 @@ +export function foo(a) { + return a += 1, a += 2; +}