Skip to content

Commit

Permalink
fix(es/compat): Handle a nullish coalescing in a switch case (#6363)
Browse files Browse the repository at this point in the history
  • Loading branch information
Austaras committed Nov 5, 2022
1 parent 0f09f82 commit 2de45fb
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 1 deletion.
Expand Up @@ -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;
}

Expand Down
Expand Up @@ -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: }
"#
);

1 comment on commit 2de45fb

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: 2de45fb Previous: 3793e83 Ratio
es/full/bugs-1 323867 ns/iter (± 14846) 350860 ns/iter (± 20700) 0.92
es/full/minify/libraries/antd 1776574431 ns/iter (± 16943512) 1852739007 ns/iter (± 19952990) 0.96
es/full/minify/libraries/d3 369077699 ns/iter (± 10680392) 401327937 ns/iter (± 21371991) 0.92
es/full/minify/libraries/echarts 1517515641 ns/iter (± 17488702) 1568398001 ns/iter (± 16519383) 0.97
es/full/minify/libraries/jquery 96313679 ns/iter (± 1611002) 100016478 ns/iter (± 3864453) 0.96
es/full/minify/libraries/lodash 112359385 ns/iter (± 3142850) 117890973 ns/iter (± 3211335) 0.95
es/full/minify/libraries/moment 56545710 ns/iter (± 1087138) 58828093 ns/iter (± 752187) 0.96
es/full/minify/libraries/react 19220199 ns/iter (± 449290) 19868229 ns/iter (± 227336) 0.97
es/full/minify/libraries/terser 284600336 ns/iter (± 7967274) 307131999 ns/iter (± 4781613) 0.93
es/full/minify/libraries/three 533373320 ns/iter (± 9205214) 559706199 ns/iter (± 12780862) 0.95
es/full/minify/libraries/typescript 3203157553 ns/iter (± 34347304) 3382097933 ns/iter (± 22458590) 0.95
es/full/minify/libraries/victory 782857472 ns/iter (± 12255166) 825497824 ns/iter (± 10507536) 0.95
es/full/minify/libraries/vue 143024842 ns/iter (± 2071717) 151816948 ns/iter (± 2602558) 0.94
es/full/codegen/es3 31968 ns/iter (± 1784) 32841 ns/iter (± 1424) 0.97
es/full/codegen/es5 31924 ns/iter (± 766) 32816 ns/iter (± 1277) 0.97
es/full/codegen/es2015 31903 ns/iter (± 1953) 32839 ns/iter (± 1205) 0.97
es/full/codegen/es2016 31911 ns/iter (± 1849) 32790 ns/iter (± 401) 0.97
es/full/codegen/es2017 31888 ns/iter (± 1346) 32759 ns/iter (± 517) 0.97
es/full/codegen/es2018 31785 ns/iter (± 677) 32786 ns/iter (± 773) 0.97
es/full/codegen/es2019 31948 ns/iter (± 1160) 31841 ns/iter (± 1373) 1.00
es/full/codegen/es2020 31847 ns/iter (± 764) 31929 ns/iter (± 1281) 1.00
es/full/all/es3 182886523 ns/iter (± 2736779) 183529938 ns/iter (± 4318748) 1.00
es/full/all/es5 173528165 ns/iter (± 4678610) 174199073 ns/iter (± 3240433) 1.00
es/full/all/es2015 139082952 ns/iter (± 3129028) 139604611 ns/iter (± 3841830) 1.00
es/full/all/es2016 138471538 ns/iter (± 3349200) 138244689 ns/iter (± 3059201) 1.00
es/full/all/es2017 137710279 ns/iter (± 3089872) 138515787 ns/iter (± 3238457) 0.99
es/full/all/es2018 135997281 ns/iter (± 3157176) 136422522 ns/iter (± 3634465) 1.00
es/full/all/es2019 135509066 ns/iter (± 2963262) 136062001 ns/iter (± 3742305) 1.00
es/full/all/es2020 130280773 ns/iter (± 2209994) 130927232 ns/iter (± 2932843) 1.00
es/full/parser 677181 ns/iter (± 30840) 674794 ns/iter (± 23769) 1.00
es/full/base/fixer 24975 ns/iter (± 818) 25162 ns/iter (± 1191) 0.99
es/full/base/resolver_and_hygiene 87952 ns/iter (± 1392) 87900 ns/iter (± 2547) 1.00
serialization of ast node 221 ns/iter (± 5) 208 ns/iter (± 5) 1.06
serialization of serde 208 ns/iter (± 6) 210 ns/iter (± 5) 0.99

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.