diff --git a/crates/swc_ecma_minifier/src/compress/optimize/iife.rs b/crates/swc_ecma_minifier/src/compress/optimize/iife.rs index 702952b45828..6d8200c5d52f 100644 --- a/crates/swc_ecma_minifier/src/compress/optimize/iife.rs +++ b/crates/swc_ecma_minifier/src/compress/optimize/iife.rs @@ -835,6 +835,10 @@ impl Optimizer<'_> { return None; } + if args.iter().any(|arg| arg.spread.is_some()) { + return None; + } + if self.vars.inline_with_multi_replacer(body) { self.changed = true; } diff --git a/crates/swc_ecma_minifier/tests/fixture/issues/8806/config.json b/crates/swc_ecma_minifier/tests/fixture/issues/8806/config.json new file mode 100644 index 000000000000..91c951a76c9d --- /dev/null +++ b/crates/swc_ecma_minifier/tests/fixture/issues/8806/config.json @@ -0,0 +1,48 @@ +{ + "defaults": true, + "arguments": false, + "arrows": true, + "booleans": true, + "booleans_as_integers": false, + "collapse_vars": true, + "comparisons": true, + "computed_props": true, + "conditionals": true, + "dead_code": true, + "directives": true, + "drop_console": false, + "drop_debugger": true, + "evaluate": true, + "expression": false, + "hoist_funs": false, + "hoist_props": true, + "hoist_vars": false, + "if_return": true, + "join_vars": true, + "keep_classnames": false, + "keep_fargs": true, + "keep_fnames": false, + "keep_infinity": false, + "loops": true, + "negate_iife": true, + "properties": true, + "reduce_funcs": false, + "reduce_vars": false, + "side_effects": true, + "switches": true, + "typeofs": true, + "unsafe": false, + "unsafe_arrows": false, + "unsafe_comps": false, + "unsafe_Function": false, + "unsafe_math": false, + "unsafe_symbols": false, + "unsafe_methods": false, + "unsafe_proto": false, + "unsafe_regexp": false, + "unsafe_undefined": false, + "unused": true, + "const_to_let": true, + "pristine_globals": true, + "passes": 2 +} diff --git a/crates/swc_ecma_minifier/tests/fixture/issues/8806/input.js b/crates/swc_ecma_minifier/tests/fixture/issues/8806/input.js new file mode 100644 index 000000000000..0c78cf9a8e46 --- /dev/null +++ b/crates/swc_ecma_minifier/tests/fixture/issues/8806/input.js @@ -0,0 +1,8 @@ + +function logTheNine() { + ((theThree, theNine) => { + console.log(theNine) + })(...[3, 9]); +} + +logTheNine(); diff --git a/crates/swc_ecma_minifier/tests/fixture/issues/8806/output.js b/crates/swc_ecma_minifier/tests/fixture/issues/8806/output.js new file mode 100644 index 000000000000..40a257d077fa --- /dev/null +++ b/crates/swc_ecma_minifier/tests/fixture/issues/8806/output.js @@ -0,0 +1,9 @@ +function logTheNine() { + ((theThree, theNine)=>{ + console.log(theNine); + })(...[ + 3, + 9 + ]); +} +logTheNine();