From 1e02e1ab35d564060c4426757244ae5ba2d00aa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Tue, 3 Jan 2023 17:45:22 +0900 Subject: [PATCH 1/8] Add a test --- crates/swc_ecma_minifier/tests/exec.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/crates/swc_ecma_minifier/tests/exec.rs b/crates/swc_ecma_minifier/tests/exec.rs index c609814dd320..8f8d3bcb3628 100644 --- a/crates/swc_ecma_minifier/tests/exec.rs +++ b/crates/swc_ecma_minifier/tests/exec.rs @@ -10407,3 +10407,24 @@ fn issue_6641() { "###, ) } + +#[test] +fn issue_6728() { + run_default_exec_test( + r###" + export async function foo() { + if (undefined_var_1) { + let replace; + + if (undefined_var_2) { + replace = 1; + } else { + replace = 2; + } + + await a({ replace }) + } + } + "###, + ) +} From e850e2c273b7430e784cba8ddf59da9e60307dc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Tue, 3 Jan 2023 18:56:45 +0900 Subject: [PATCH 2/8] fixup --- crates/swc_ecma_minifier/tests/exec.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/swc_ecma_minifier/tests/exec.rs b/crates/swc_ecma_minifier/tests/exec.rs index 8f8d3bcb3628..75c6e10a1949 100644 --- a/crates/swc_ecma_minifier/tests/exec.rs +++ b/crates/swc_ecma_minifier/tests/exec.rs @@ -10412,7 +10412,7 @@ fn issue_6641() { fn issue_6728() { run_default_exec_test( r###" - export async function foo() { + async function foo() { if (undefined_var_1) { let replace; @@ -10425,6 +10425,7 @@ fn issue_6728() { await a({ replace }) } } + console.log('PASS') "###, ) } From 63be02b27d8452615687521a7235a3636a568c5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Tue, 3 Jan 2023 18:57:33 +0900 Subject: [PATCH 3/8] Add a trest --- .../fixture/issues-6xxx/6729/input/.swcrc | 20 +++++++++++++++++++ .../fixture/issues-6xxx/6729/input/index.js | 13 ++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 crates/swc/tests/fixture/issues-6xxx/6729/input/.swcrc create mode 100644 crates/swc/tests/fixture/issues-6xxx/6729/input/index.js diff --git a/crates/swc/tests/fixture/issues-6xxx/6729/input/.swcrc b/crates/swc/tests/fixture/issues-6xxx/6729/input/.swcrc new file mode 100644 index 000000000000..3e40c886ea32 --- /dev/null +++ b/crates/swc/tests/fixture/issues-6xxx/6729/input/.swcrc @@ -0,0 +1,20 @@ +{ + "jsc": { + "parser": { + "syntax": "typescript", + "decorators": true, + "tsx": false + }, + "target": "es2020", + "loose": false, + "minify": { + "compress": false, + "mangle": false + } + }, + "module": { + "type": "es6" + }, + "minify": true, + "isModule": true +} \ No newline at end of file diff --git a/crates/swc/tests/fixture/issues-6xxx/6729/input/index.js b/crates/swc/tests/fixture/issues-6xxx/6729/input/index.js new file mode 100644 index 000000000000..157ca8510bfe --- /dev/null +++ b/crates/swc/tests/fixture/issues-6xxx/6729/input/index.js @@ -0,0 +1,13 @@ +export async function foo() { + if (undefined_var_1) { + let replace; + + if (undefined_var_2) { + replace = 1; + } else { + replace = 2; + } + + await a({ replace }) + } +} From deeb30232b686b3479ebae5e84b997ddd3a7015b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Tue, 3 Jan 2023 18:58:30 +0900 Subject: [PATCH 4/8] fixup --- crates/swc/tests/fixture/issues-6xxx/6729/input/.swcrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/swc/tests/fixture/issues-6xxx/6729/input/.swcrc b/crates/swc/tests/fixture/issues-6xxx/6729/input/.swcrc index 3e40c886ea32..55fad498e283 100644 --- a/crates/swc/tests/fixture/issues-6xxx/6729/input/.swcrc +++ b/crates/swc/tests/fixture/issues-6xxx/6729/input/.swcrc @@ -8,7 +8,7 @@ "target": "es2020", "loose": false, "minify": { - "compress": false, + "compress": true, "mangle": false } }, From 50ff545a66b263e276f154b08f6d5bbc4835a5c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Tue, 3 Jan 2023 19:11:42 +0900 Subject: [PATCH 5/8] Fix --- .../src/compress/optimize/sequences.rs | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/crates/swc_ecma_minifier/src/compress/optimize/sequences.rs b/crates/swc_ecma_minifier/src/compress/optimize/sequences.rs index d24c59c6d53d..6254d2def113 100644 --- a/crates/swc_ecma_minifier/src/compress/optimize/sequences.rs +++ b/crates/swc_ecma_minifier/src/compress/optimize/sequences.rs @@ -2444,15 +2444,6 @@ impl Visit for UsageCounter<'_> { } } - fn visit_super_prop_expr(&mut self, e: &SuperPropExpr) { - if let SuperProp::Computed(c) = &e.prop { - let old = self.in_lhs; - self.in_lhs = false; - c.expr.visit_with(self); - self.in_lhs = old; - } - } - fn visit_pat(&mut self, p: &Pat) { let old = self.in_lhs; self.in_lhs = true; @@ -2466,6 +2457,22 @@ impl Visit for UsageCounter<'_> { p.visit_children_with(self); self.in_lhs = old; } + + fn visit_prop_name(&mut self, p: &PropName) { + match p { + PropName::Computed(p) => p.visit_with(self), + _ => {} + } + } + + fn visit_super_prop_expr(&mut self, e: &SuperPropExpr) { + if let SuperProp::Computed(c) = &e.prop { + let old = self.in_lhs; + self.in_lhs = false; + c.expr.visit_with(self); + self.in_lhs = old; + } + } } #[derive(Debug)] From ca4c6eef561ca86984df706e5edefb5f0d0e50fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Tue, 3 Jan 2023 19:12:22 +0900 Subject: [PATCH 6/8] Fix input --- crates/swc/tests/fixture/issues-6xxx/6729/input/.swcrc | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/swc/tests/fixture/issues-6xxx/6729/input/.swcrc b/crates/swc/tests/fixture/issues-6xxx/6729/input/.swcrc index 55fad498e283..578baada5531 100644 --- a/crates/swc/tests/fixture/issues-6xxx/6729/input/.swcrc +++ b/crates/swc/tests/fixture/issues-6xxx/6729/input/.swcrc @@ -15,6 +15,5 @@ "module": { "type": "es6" }, - "minify": true, "isModule": true } \ No newline at end of file From c3ad45dab81722f3b7bb48c4ce63a9378d47dd0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Tue, 3 Jan 2023 19:12:33 +0900 Subject: [PATCH 7/8] Update test refs --- crates/swc/tests/fixture/issues-6xxx/6729/output/index.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 crates/swc/tests/fixture/issues-6xxx/6729/output/index.js diff --git a/crates/swc/tests/fixture/issues-6xxx/6729/output/index.js b/crates/swc/tests/fixture/issues-6xxx/6729/output/index.js new file mode 100644 index 000000000000..baa943f7394b --- /dev/null +++ b/crates/swc/tests/fixture/issues-6xxx/6729/output/index.js @@ -0,0 +1,5 @@ +export async function foo() { + undefined_var_1 && await a({ + replace: undefined_var_2 ? 1 : 2 + }); +} From 8e4876af4f176427682e23f75ab035fcbf3219a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Tue, 3 Jan 2023 19:14:25 +0900 Subject: [PATCH 8/8] clippy --- crates/swc_ecma_minifier/src/compress/optimize/sequences.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/crates/swc_ecma_minifier/src/compress/optimize/sequences.rs b/crates/swc_ecma_minifier/src/compress/optimize/sequences.rs index 6254d2def113..ca9b6db5e423 100644 --- a/crates/swc_ecma_minifier/src/compress/optimize/sequences.rs +++ b/crates/swc_ecma_minifier/src/compress/optimize/sequences.rs @@ -2459,9 +2459,8 @@ impl Visit for UsageCounter<'_> { } fn visit_prop_name(&mut self, p: &PropName) { - match p { - PropName::Computed(p) => p.visit_with(self), - _ => {} + if let PropName::Computed(p) = p { + p.visit_with(self) } }