From 2de45fb0f7f0afbf2a15a6a27776a43faacebffc Mon Sep 17 00:00:00 2001 From: Austaras Date: Sun, 6 Nov 2022 02:31:02 +0800 Subject: [PATCH] fix(es/compat): Handle a nullish coalescing in a switch case (#6363) --- .../src/es2020/nullish_coalescing/mod.rs | 4 +++- .../src/es2020/nullish_coalescing/tests.rs | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/crates/swc_ecma_transforms_compat/src/es2020/nullish_coalescing/mod.rs b/crates/swc_ecma_transforms_compat/src/es2020/nullish_coalescing/mod.rs index 0555316843ca..ece24839d67c 100644 --- a/crates/swc_ecma_transforms_compat/src/es2020/nullish_coalescing/mod.rs +++ b/crates/swc_ecma_transforms_compat/src/es2020/nullish_coalescing/mod.rs @@ -74,8 +74,10 @@ impl VisitMut for NullishCoalescing { /// Prevents #1123 fn visit_mut_switch_case(&mut self, s: &mut SwitchCase) { + // Prevents #6328 + s.test.visit_mut_with(self); let old_vars = self.vars.take(); - s.visit_mut_children_with(self); + s.cons.visit_mut_with(self); self.vars = old_vars; } diff --git a/crates/swc_ecma_transforms_compat/src/es2020/nullish_coalescing/tests.rs b/crates/swc_ecma_transforms_compat/src/es2020/nullish_coalescing/tests.rs index d4623f1b45c3..13a3c615c3f6 100644 --- a/crates/swc_ecma_transforms_compat/src/es2020/nullish_coalescing/tests.rs +++ b/crates/swc_ecma_transforms_compat/src/es2020/nullish_coalescing/tests.rs @@ -166,3 +166,14 @@ function foo(opts) { } "# ); + +test!( + syntax(), + |_| tr(Default::default()), + issue_6328, + "switch ( 0 ) { case 0 ?? 0 : }", + r#" + var ref; + switch ( 0 ) { case (ref = 0) !== null && ref !== void 0 ? ref : 0: } +"# +);