Skip to content

Commit d1687d8

Browse files
authoredJan 27, 2023
feat(es/minifier): Improve compatibility of arrows with terser (#6862)
**Related issue:** - Closes #6123.
1 parent 49d9237 commit d1687d8

File tree

5 files changed

+35
-14
lines changed

5 files changed

+35
-14
lines changed
 

‎crates/swc_ecma_minifier/src/compress/pure/arrows.rs

-4
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,6 @@ impl Pure<'_> {
4141
}
4242

4343
pub(super) fn optimize_arrow_body(&mut self, b: &mut BlockStmtOrExpr) {
44-
if !self.options.arrows {
45-
return;
46-
}
47-
4844
match b {
4945
BlockStmtOrExpr::BlockStmt(s) => {
5046
if s.stmts.len() == 1 {
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
function n(n, e, t, r, o, u, i) {
1+
function n(n, e, t, r, o, i, u) {
22
try {
3-
var a = n[u](i);
3+
var a = n[i](u);
44
var c = a.value;
55
} catch (n) {
66
t(n);
@@ -12,20 +12,19 @@ function n(n, e, t, r, o, u, i) {
1212
function e(e) {
1313
return function() {
1414
var t = this, r = arguments;
15-
return new Promise(function(o, u) {
16-
var i = e.apply(t, r);
15+
return new Promise(function(o, i) {
16+
var u = e.apply(t, r);
1717
function a(e) {
18-
n(i, o, u, a, c, "next", e);
18+
n(u, o, i, a, c, "next", e);
1919
}
2020
function c(e) {
21-
n(i, o, u, a, c, "throw", e);
21+
n(u, o, i, a, c, "throw", e);
2222
}
2323
a(void 0);
2424
});
2525
};
2626
}
27-
export const styleLoader = ()=>{
28-
return {
27+
export const styleLoader = ()=>({
2928
name: 'style-loader',
3029
setup (n) {
3130
n.onLoad({
@@ -38,5 +37,4 @@ export const styleLoader = ()=>{
3837
};
3938
}());
4039
}
41-
};
42-
};
40+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"defaults": false,
3+
"conditionals": true,
4+
"dead_code": true,
5+
"arrows": false
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
const arrow = (param) => {
2+
return Boolean(param);
3+
}
4+
5+
const obj = {
6+
method1() {
7+
return "hello";
8+
},
9+
method2() {
10+
return "goodbye"
11+
}
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const arrow = (param)=>Boolean(param);
2+
const obj = {
3+
method1 () {
4+
return "hello";
5+
},
6+
method2 () {
7+
return "goodbye";
8+
}
9+
};

1 commit comments

Comments
 (1)

github-actions[bot] commented on Jan 27, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: d1687d8 Previous: 45cdfed Ratio
es/full/bugs-1 304082 ns/iter (± 12956) 313395 ns/iter (± 15437) 0.97
es/full/minify/libraries/antd 1740955799 ns/iter (± 32105238) 1639068267 ns/iter (± 16134553) 1.06
es/full/minify/libraries/d3 319078838 ns/iter (± 5378203) 307974749 ns/iter (± 8517587) 1.04
es/full/minify/libraries/echarts 1323514962 ns/iter (± 12849365) 1250176617 ns/iter (± 25367464) 1.06
es/full/minify/libraries/jquery 92205735 ns/iter (± 1438381) 90084430 ns/iter (± 731479) 1.02
es/full/minify/libraries/lodash 107661089 ns/iter (± 792840) 107229360 ns/iter (± 1582212) 1.00
es/full/minify/libraries/moment 53435910 ns/iter (± 322087) 52914679 ns/iter (± 399068) 1.01
es/full/minify/libraries/react 19243723 ns/iter (± 184995) 19323092 ns/iter (± 210475) 1.00
es/full/minify/libraries/terser 268633089 ns/iter (± 5290308) 248535808 ns/iter (± 5828446) 1.08
es/full/minify/libraries/three 488455873 ns/iter (± 6148862) 437936680 ns/iter (± 5107717) 1.12
es/full/minify/libraries/typescript 3300901048 ns/iter (± 22339432) 3060947966 ns/iter (± 33377066) 1.08
es/full/minify/libraries/victory 728483566 ns/iter (± 8925192) 700859205 ns/iter (± 16343645) 1.04
es/full/minify/libraries/vue 136365092 ns/iter (± 1677214) 132278025 ns/iter (± 2431092) 1.03
es/full/codegen/es3 25925 ns/iter (± 38) 25920 ns/iter (± 46) 1.00
es/full/codegen/es5 25926 ns/iter (± 46) 25922 ns/iter (± 55) 1.00
es/full/codegen/es2015 25912 ns/iter (± 57) 25926 ns/iter (± 44) 1.00
es/full/codegen/es2016 25912 ns/iter (± 40) 25937 ns/iter (± 35) 1.00
es/full/codegen/es2017 25936 ns/iter (± 64) 25873 ns/iter (± 32) 1.00
es/full/codegen/es2018 25927 ns/iter (± 53) 25907 ns/iter (± 33) 1.00
es/full/codegen/es2019 25944 ns/iter (± 46) 25866 ns/iter (± 57) 1.00
es/full/codegen/es2020 25925 ns/iter (± 17) 25928 ns/iter (± 58) 1.00
es/full/all/es3 167741517 ns/iter (± 4207534) 174492493 ns/iter (± 1699127) 0.96
es/full/all/es5 161725267 ns/iter (± 3170030) 166674513 ns/iter (± 1636767) 0.97
es/full/all/es2015 122508284 ns/iter (± 1684730) 127504277 ns/iter (± 1589062) 0.96
es/full/all/es2016 121739297 ns/iter (± 1225050) 126219831 ns/iter (± 2635659) 0.96
es/full/all/es2017 121160607 ns/iter (± 464896) 124068682 ns/iter (± 2051142) 0.98
es/full/all/es2018 118731764 ns/iter (± 697826) 123224614 ns/iter (± 1378074) 0.96
es/full/all/es2019 118207341 ns/iter (± 577834) 122429255 ns/iter (± 1681185) 0.97
es/full/all/es2020 113576354 ns/iter (± 981923) 116596154 ns/iter (± 1076141) 0.97
es/full/parser 536357 ns/iter (± 12587) 536741 ns/iter (± 8781) 1.00
es/full/base/fixer 21823 ns/iter (± 33) 22026 ns/iter (± 41) 0.99
es/full/base/resolver_and_hygiene 78990 ns/iter (± 64) 79032 ns/iter (± 83) 1.00
serialization of ast node 126 ns/iter (± 0) 127 ns/iter (± 0) 0.99
serialization of serde 129 ns/iter (± 0) 129 ns/iter (± 0) 1
css/minify/libraries/bootstrap 28200042 ns/iter (± 81253) 28038729 ns/iter (± 106759) 1.01
css/visitor/compare/clone 2037759 ns/iter (± 23342) 2091233 ns/iter (± 4327) 0.97
css/visitor/compare/visit_mut_span 2247312 ns/iter (± 5322) 2262220 ns/iter (± 5192) 0.99
css/visitor/compare/visit_mut_span_panic 2341920 ns/iter (± 7836) 2319569 ns/iter (± 6938) 1.01
css/visitor/compare/fold_span 3018027 ns/iter (± 20628) 3035008 ns/iter (± 20125) 0.99
css/visitor/compare/fold_span_panic 3213324 ns/iter (± 21089) 3184851 ns/iter (± 18374) 1.01
css/lexer/bootstrap_5_1_3 5192997 ns/iter (± 3769) 5201332 ns/iter (± 1807) 1.00
css/lexer/foundation_6_7_4 4371828 ns/iter (± 3610) 4377081 ns/iter (± 559) 1.00
css/lexer/tailwind_3_1_1 830019 ns/iter (± 555) 832926 ns/iter (± 173) 1.00
css/parser/bootstrap_5_1_3 21883143 ns/iter (± 92794) 21645200 ns/iter (± 93965) 1.01
css/parser/foundation_6_7_4 17418363 ns/iter (± 18476) 17289475 ns/iter (± 42191) 1.01
css/parser/tailwind_3_1_1 3360473 ns/iter (± 11158) 3318345 ns/iter (± 6209) 1.01
es/codegen/colors 326768 ns/iter (± 184614) 328547 ns/iter (± 184556) 0.99
es/codegen/large 1193643 ns/iter (± 612761) 1202999 ns/iter (± 606546) 0.99
es/codegen/with-parser/colors 48739 ns/iter (± 391) 48890 ns/iter (± 295) 1.00
es/codegen/with-parser/large 531849 ns/iter (± 2211) 533710 ns/iter (± 1554) 1.00
es/minify/libraries/antd 1527420526 ns/iter (± 21930854) 1427877810 ns/iter (± 12063103) 1.07
es/minify/libraries/d3 257547286 ns/iter (± 2738067) 257337526 ns/iter (± 5369384) 1.00
es/minify/libraries/echarts 1134774715 ns/iter (± 7504928) 1064539653 ns/iter (± 29288825) 1.07
es/minify/libraries/jquery 78847953 ns/iter (± 720327) 78566544 ns/iter (± 963109) 1.00
es/minify/libraries/lodash 95917018 ns/iter (± 1076424) 97292983 ns/iter (± 1209481) 0.99
es/minify/libraries/moment 46080854 ns/iter (± 233666) 46127692 ns/iter (± 500119) 1.00
es/minify/libraries/react 17127913 ns/iter (± 69364) 17122995 ns/iter (± 236021) 1.00
es/minify/libraries/terser 226403332 ns/iter (± 4139825) 209153722 ns/iter (± 2082783) 1.08
es/minify/libraries/three 391289182 ns/iter (± 10379283) 355728893 ns/iter (± 4745966) 1.10
es/minify/libraries/typescript 2814638404 ns/iter (± 13787198) 2608170293 ns/iter (± 21307645) 1.08
es/minify/libraries/victory 647735804 ns/iter (± 11022607) 568185983 ns/iter (± 12007632) 1.14
es/minify/libraries/vue 120205678 ns/iter (± 1581488) 118111511 ns/iter (± 3884717) 1.02
es/visitor/compare/clone 2416150 ns/iter (± 14894) 2391913 ns/iter (± 23819) 1.01
es/visitor/compare/visit_mut_span 2789862 ns/iter (± 26030) 2782514 ns/iter (± 8722) 1.00
es/visitor/compare/visit_mut_span_panic 2856014 ns/iter (± 19081) 2819638 ns/iter (± 4231) 1.01
es/visitor/compare/fold_span 3984329 ns/iter (± 14496) 3936819 ns/iter (± 30081) 1.01
es/visitor/compare/fold_span_panic 4120687 ns/iter (± 30231) 4067717 ns/iter (± 7019) 1.01
es/lexer/colors 17308 ns/iter (± 16) 17171 ns/iter (± 18) 1.01
es/lexer/angular 8216519 ns/iter (± 8326) 8234442 ns/iter (± 3902) 1.00
es/lexer/backbone 1074763 ns/iter (± 1189) 1076588 ns/iter (± 504) 1.00
es/lexer/jquery 5955387 ns/iter (± 4874) 5956251 ns/iter (± 3017) 1.00
es/lexer/jquery mobile 9199686 ns/iter (± 6231) 9201574 ns/iter (± 3618) 1.00
es/lexer/mootools 4655552 ns/iter (± 13204) 4661856 ns/iter (± 3109) 1.00
es/lexer/underscore 894818 ns/iter (± 960) 895508 ns/iter (± 213) 1.00
es/lexer/three 27738249 ns/iter (± 16782) 27800989 ns/iter (± 47824) 1.00
es/lexer/yui 5027126 ns/iter (± 4315) 5042651 ns/iter (± 1439) 1.00
es/parser/colors 30009 ns/iter (± 140) 30099 ns/iter (± 118) 1.00
es/parser/angular 15826081 ns/iter (± 326066) 15319098 ns/iter (± 111024) 1.03
es/parser/backbone 2297789 ns/iter (± 9628) 2299041 ns/iter (± 15495) 1.00
es/parser/jquery 12557781 ns/iter (± 61124) 12380370 ns/iter (± 59364) 1.01
es/parser/jquery mobile 20128919 ns/iter (± 346721) 19366683 ns/iter (± 106958) 1.04
es/parser/mootools 9510575 ns/iter (± 41412) 9532843 ns/iter (± 22072) 1.00
es/parser/underscore 1953651 ns/iter (± 10329) 1953151 ns/iter (± 13961) 1.00
es/parser/three 60312952 ns/iter (± 394061) 57084629 ns/iter (± 868828) 1.06
es/parser/yui 9566113 ns/iter (± 67683) 9487250 ns/iter (± 47957) 1.01
es/preset-env/usage/builtin_type 138487 ns/iter (± 30398) 138819 ns/iter (± 31042) 1.00
es/preset-env/usage/property 21155 ns/iter (± 101) 21576 ns/iter (± 65) 0.98
es/resolver/typescript 121717023 ns/iter (± 2942834) 107933194 ns/iter (± 1608517) 1.13
es/fixer/typescript 97537869 ns/iter (± 2166438) 85745001 ns/iter (± 613761) 1.14
es/hygiene/typescript 204012224 ns/iter (± 1085765) 181100465 ns/iter (± 1287218) 1.13
es/resolver_with_hygiene/typescript 345870094 ns/iter (± 1921333) 315561753 ns/iter (± 4320461) 1.10
es/visitor/base-perf/module_clone 76078 ns/iter (± 1181) 75961 ns/iter (± 1286) 1.00
es/visitor/base-perf/fold_empty 86062 ns/iter (± 2050) 85612 ns/iter (± 1891) 1.01
es/visitor/base-perf/fold_noop_impl_all 87014 ns/iter (± 1039) 85658 ns/iter (± 1630) 1.02
es/visitor/base-perf/fold_noop_impl_vec 86049 ns/iter (± 982) 85663 ns/iter (± 923) 1.00
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 56 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 59 ns/iter (± 0) 59 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 104 ns/iter (± 0) 104 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed 103 ns/iter (± 0) 105 ns/iter (± 0) 0.98
es/visitor/base-perf/visit_contains_this 3429 ns/iter (± 86) 3572 ns/iter (± 69) 0.96
es/base/parallel/resolver/typescript 5309149438 ns/iter (± 532241757) 5846657913 ns/iter (± 396917924) 0.91
es/base/parallel/hygiene/typescript 2375165170 ns/iter (± 30069945) 2158720424 ns/iter (± 30593660) 1.10
misc/visitors/time-complexity/time 5 93 ns/iter (± 0) 93 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 298 ns/iter (± 0) 305 ns/iter (± 1) 0.98
misc/visitors/time-complexity/time 15 624 ns/iter (± 4) 613 ns/iter (± 0) 1.02
misc/visitors/time-complexity/time 20 1150 ns/iter (± 6) 1161 ns/iter (± 19) 0.99
misc/visitors/time-complexity/time 40 6005 ns/iter (± 22) 6077 ns/iter (± 54) 0.99
misc/visitors/time-complexity/time 60 15278 ns/iter (± 59) 15337 ns/iter (± 26) 1.00
es/full-target/es2016 189049 ns/iter (± 729) 189457 ns/iter (± 439) 1.00
es/full-target/es2017 184099 ns/iter (± 379) 184554 ns/iter (± 602) 1.00
es/full-target/es2018 172874 ns/iter (± 574) 173655 ns/iter (± 767) 1.00
es2020_nullish_coalescing 67591 ns/iter (± 4959) 67380 ns/iter (± 130) 1.00
es2020_optional_chaining 96647 ns/iter (± 246) 96413 ns/iter (± 1072) 1.00
es2022_class_properties 94298 ns/iter (± 169) 94867 ns/iter (± 268) 0.99
es2018_object_rest_spread 72017 ns/iter (± 97) 72116 ns/iter (± 76) 1.00
es2019_optional_catch_binding 61598 ns/iter (± 60) 61563 ns/iter (± 94) 1.00
es2017_async_to_generator 62356 ns/iter (± 80) 62216 ns/iter (± 61) 1.00
es2016_exponentiation 65582 ns/iter (± 897) 65278 ns/iter (± 156) 1.00
es2015_arrow 70902 ns/iter (± 236) 70383 ns/iter (± 310) 1.01
es2015_block_scoped_fn 66563 ns/iter (± 110) 66289 ns/iter (± 98) 1.00
es2015_block_scoping 154611 ns/iter (± 9308) 160159 ns/iter (± 8187) 0.97
es2015_classes 117412 ns/iter (± 273) 117103 ns/iter (± 377) 1.00
es2015_computed_props 61558 ns/iter (± 84) 61219 ns/iter (± 95) 1.01
es2015_destructuring 116534 ns/iter (± 2061) 115388 ns/iter (± 285) 1.01
es2015_duplicate_keys 64425 ns/iter (± 72) 64043 ns/iter (± 206) 1.01
es2015_parameters 80287 ns/iter (± 91) 79702 ns/iter (± 147) 1.01
es2015_fn_name 66896 ns/iter (± 535) 66395 ns/iter (± 382) 1.01
es2015_for_of 64967 ns/iter (± 106) 64566 ns/iter (± 105) 1.01
es2015_instanceof 63669 ns/iter (± 109) 63387 ns/iter (± 122) 1.00
es2015_shorthand_property 61950 ns/iter (± 123) 61160 ns/iter (± 84) 1.01
es2015_spread 61540 ns/iter (± 118) 61055 ns/iter (± 80) 1.01
es2015_sticky_regex 62710 ns/iter (± 131) 62541 ns/iter (± 84) 1.00
es2015_typeof_symbol 62894 ns/iter (± 51) 62482 ns/iter (± 88) 1.01
es/transform/baseline/base 52432 ns/iter (± 124) 52253 ns/iter (± 111) 1.00
es/transform/baseline/common_reserved_word 63485 ns/iter (± 82) 63100 ns/iter (± 108) 1.01
es/transform/baseline/common_typescript 144030 ns/iter (± 250) 143606 ns/iter (± 219) 1.00
es/target/es3 170411 ns/iter (± 321) 169706 ns/iter (± 98) 1.00
es/target/es2015 627753 ns/iter (± 1475) 626271 ns/iter (± 1063) 1.00
es/target/es2016 65788 ns/iter (± 300) 65399 ns/iter (± 165) 1.01
es/target/es2017 62546 ns/iter (± 115) 62478 ns/iter (± 89) 1.00
es/target/es2018 82131 ns/iter (± 193) 82021 ns/iter (± 181) 1.00
es/target/es2020 133446 ns/iter (± 328) 133293 ns/iter (± 217) 1.00
babelify-only 669208 ns/iter (± 1153) 672753 ns/iter (± 960) 0.99
parse_and_babelify_angular 45555589 ns/iter (± 925575) 43088560 ns/iter (± 557160) 1.06
parse_and_babelify_backbone 5584423 ns/iter (± 83437) 5413517 ns/iter (± 25630) 1.03
parse_and_babelify_jquery 33949451 ns/iter (± 445289) 31777007 ns/iter (± 392136) 1.07
parse_and_babelify_jquery_mobile 58444114 ns/iter (± 1759734) 55463275 ns/iter (± 1522985) 1.05
parse_and_babelify_mootools 34475672 ns/iter (± 510058) 31932520 ns/iter (± 424629) 1.08
parse_and_babelify_underscore 4388477 ns/iter (± 29615) 4411864 ns/iter (± 28274) 0.99
parse_and_babelify_yui 33761913 ns/iter (± 594045) 32980295 ns/iter (± 483287) 1.02
html/minify/document/css_spec 42250002 ns/iter (± 622317) 41755636 ns/iter (± 178097) 1.01
html/minify/document/github 17541989 ns/iter (± 109924) 17576012 ns/iter (± 28352) 1.00
html/minify/document/stackoverflow 15532408 ns/iter (± 24039) 15654396 ns/iter (± 44907) 0.99
html/minify/document_fragment/css_spec 40664597 ns/iter (± 276911) 39673704 ns/iter (± 266636) 1.02
html/minify/document_fragment/github 16727279 ns/iter (± 16367) 16832345 ns/iter (± 19934) 0.99
html/minify/document_fragment/stackoverflow 15145462 ns/iter (± 52551) 15249944 ns/iter (± 15088) 0.99
html/document/visitor/compare/clone 341685 ns/iter (± 2823) 343293 ns/iter (± 2471) 1.00
html/document/visitor/compare/visit_mut_span 370617 ns/iter (± 2207) 371411 ns/iter (± 1541) 1.00
html/document/visitor/compare/visit_mut_span_panic 385657 ns/iter (± 2058) 381886 ns/iter (± 1228) 1.01
html/document/visitor/compare/fold_span 406586 ns/iter (± 1568) 408032 ns/iter (± 2156) 1.00
html/document/visitor/compare/fold_span_panic 463614 ns/iter (± 2696) 465244 ns/iter (± 2552) 1.00
html/document_fragment/visitor/compare/clone 346917 ns/iter (± 1863) 342963 ns/iter (± 2453) 1.01
html/document_fragment/visitor/compare/visit_mut_span 374163 ns/iter (± 1774) 372123 ns/iter (± 2329) 1.01
html/document_fragment/visitor/compare/visit_mut_span_panic 379831 ns/iter (± 2167) 376292 ns/iter (± 2597) 1.01
html/document_fragment/visitor/compare/fold_span 411896 ns/iter (± 1787) 409567 ns/iter (± 2438) 1.01
html/document_fragment/visitor/compare/fold_span_panic 468696 ns/iter (± 1739) 462915 ns/iter (± 1739) 1.01
html/lexer/css_2021_spec 15548629 ns/iter (± 8553) 15551755 ns/iter (± 15424) 1.00
html/lexer/github_com_17_05_2022 6042043 ns/iter (± 2865) 6031647 ns/iter (± 4678) 1.00
html/lexer/stackoverflow_com_17_05_2022 5659161 ns/iter (± 1991) 5652630 ns/iter (± 2275) 1.00
html/parser/parser_document/css_2021_spec 25682031 ns/iter (± 153042) 25318247 ns/iter (± 145875) 1.01
html/parser/parser_document/github_com_17_05_2022 8767922 ns/iter (± 9943) 8709605 ns/iter (± 4724) 1.01
html/parser/parser_document/stackoverflow_com_17_05_2022 7738426 ns/iter (± 77973) 7688362 ns/iter (± 8607) 1.01
html/parser/parser_document_fragment/css_2021_spec 27360687 ns/iter (± 289748) 25588471 ns/iter (± 226494) 1.07
html/parser/parser_document_fragment/github_com_17_05_2022 8811394 ns/iter (± 21267) 8722348 ns/iter (± 19593) 1.01
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7785947 ns/iter (± 9776) 7707038 ns/iter (± 11992) 1.01

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

Please sign in to comment.