Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(es/minifier): Fix handling of optional chaining when `hoist_props…
- Loading branch information
Showing
7 changed files
with
130 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
{ | ||
"jsc": { | ||
"parser": { | ||
"syntax": "ecmascript", | ||
"jsx": false | ||
}, | ||
"target": "es2022", | ||
"loose": false, | ||
"minify": { | ||
"compress": { | ||
"arguments": false, | ||
"arrows": false, | ||
"booleans": false, | ||
"booleans_as_integers": false, | ||
"collapse_vars": false, | ||
"comparisons": false, | ||
"computed_props": false, | ||
"conditionals": false, | ||
"dead_code": false, | ||
"directives": false, | ||
"drop_console": false, | ||
"drop_debugger": false, | ||
"evaluate": false, | ||
"expression": false, | ||
"hoist_funs": false, | ||
"hoist_props": true, | ||
"hoist_vars": false, | ||
"if_return": false, | ||
"join_vars": false, | ||
"keep_classnames": false, | ||
"keep_fargs": false, | ||
"keep_fnames": false, | ||
"keep_infinity": false, | ||
"loops": false, | ||
"negate_iife": false, | ||
"properties": false, | ||
"reduce_funcs": false, | ||
"reduce_vars": false, | ||
"side_effects": false, | ||
"switches": false, | ||
"typeofs": false, | ||
"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": false, | ||
"const_to_let": false, | ||
"pristine_globals": false | ||
}, | ||
"mangle": false | ||
} | ||
}, | ||
"module": { | ||
"type": "es6" | ||
}, | ||
"minify": false, | ||
"isModule": true | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
function f() { | ||
const foos = something.getFoos(); | ||
return foos?.[0]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
function f() { | ||
return something.getFoos()?.[0]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
47 changes: 47 additions & 0 deletions
47
crates/swc_ecma_minifier/tests/fixture/issues/7228/1/conifig.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
{ | ||
"arguments": false, | ||
"arrows": false, | ||
"booleans": false, | ||
"booleans_as_integers": false, | ||
"collapse_vars": false, | ||
"comparisons": false, | ||
"computed_props": false, | ||
"conditionals": false, | ||
"dead_code": false, | ||
"directives": false, | ||
"drop_console": false, | ||
"drop_debugger": false, | ||
"evaluate": false, | ||
"expression": false, | ||
"hoist_funs": false, | ||
"hoist_props": true, | ||
"hoist_vars": false, | ||
"if_return": false, | ||
"join_vars": false, | ||
"keep_classnames": false, | ||
"keep_fargs": false, | ||
"keep_fnames": false, | ||
"keep_infinity": false, | ||
"loops": false, | ||
"negate_iife": false, | ||
"properties": false, | ||
"reduce_funcs": false, | ||
"reduce_vars": false, | ||
"side_effects": false, | ||
"switches": false, | ||
"typeofs": false, | ||
"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": false, | ||
"const_to_let": false, | ||
"pristine_globals": false, | ||
"defaults": true | ||
} |
4 changes: 4 additions & 0 deletions
4
crates/swc_ecma_minifier/tests/fixture/issues/7228/1/input.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
export function f() { | ||
const foos = something.getFoos(); | ||
return foos?.[0]; | ||
} |
4 changes: 4 additions & 0 deletions
4
crates/swc_ecma_minifier/tests/fixture/issues/7228/1/output.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
export function f() { | ||
const foos = something.getFoos(); | ||
return foos?.[0]; | ||
} |
a44fea1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Benchmark
es/full/bugs-1
321627
ns/iter (± 16870
)293405
ns/iter (± 11815
)1.10
es/full/minify/libraries/antd
1562282824
ns/iter (± 22363391
)1553815340
ns/iter (± 20650409
)1.01
es/full/minify/libraries/d3
309762723
ns/iter (± 8618615
)302760721
ns/iter (± 6027602
)1.02
es/full/minify/libraries/echarts
1214217603
ns/iter (± 11172791
)1201064793
ns/iter (± 14532282
)1.01
es/full/minify/libraries/jquery
90816328
ns/iter (± 1518822
)90394766
ns/iter (± 620464
)1.00
es/full/minify/libraries/lodash
107733143
ns/iter (± 1883081
)104819610
ns/iter (± 1228118
)1.03
es/full/minify/libraries/moment
52807734
ns/iter (± 466518
)52227456
ns/iter (± 382148
)1.01
es/full/minify/libraries/react
19452493
ns/iter (± 355120
)18912023
ns/iter (± 80765
)1.03
es/full/minify/libraries/terser
244036265
ns/iter (± 3832527
)237841685
ns/iter (± 1730056
)1.03
es/full/minify/libraries/three
435998234
ns/iter (± 8855533
)418484077
ns/iter (± 3413038
)1.04
es/full/minify/libraries/typescript
2945507478
ns/iter (± 19015204
)2876485289
ns/iter (± 27712696
)1.02
es/full/minify/libraries/victory
647450600
ns/iter (± 12982972
)640869258
ns/iter (± 6779449
)1.01
es/full/minify/libraries/vue
130674464
ns/iter (± 1196927
)129212582
ns/iter (± 559562
)1.01
es/full/codegen/es3
28677
ns/iter (± 65
)28359
ns/iter (± 92
)1.01
es/full/codegen/es5
28866
ns/iter (± 70
)28533
ns/iter (± 55
)1.01
es/full/codegen/es2015
28792
ns/iter (± 66
)28505
ns/iter (± 125
)1.01
es/full/codegen/es2016
28821
ns/iter (± 102
)28497
ns/iter (± 30
)1.01
es/full/codegen/es2017
28767
ns/iter (± 53
)28458
ns/iter (± 130
)1.01
es/full/codegen/es2018
28761
ns/iter (± 68
)28211
ns/iter (± 62
)1.02
es/full/codegen/es2019
28738
ns/iter (± 39
)28315
ns/iter (± 122
)1.01
es/full/codegen/es2020
28800
ns/iter (± 84
)28289
ns/iter (± 159
)1.02
es/full/all/es3
184757716
ns/iter (± 2603690
)177380010
ns/iter (± 3297651
)1.04
es/full/all/es5
174877409
ns/iter (± 2234745
)173681366
ns/iter (± 2215956
)1.01
es/full/all/es2015
135586840
ns/iter (± 2275650
)135088567
ns/iter (± 1521635
)1.00
es/full/all/es2016
134439221
ns/iter (± 1540759
)131943735
ns/iter (± 2021923
)1.02
es/full/all/es2017
132618432
ns/iter (± 2122569
)129819665
ns/iter (± 906702
)1.02
es/full/all/es2018
128777947
ns/iter (± 1741175
)126179109
ns/iter (± 759846
)1.02
es/full/all/es2019
126836499
ns/iter (± 1404964
)123794082
ns/iter (± 1299203
)1.02
es/full/all/es2020
119890145
ns/iter (± 1634846
)116804863
ns/iter (± 1025793
)1.03
es/full/parser
516626
ns/iter (± 7334
)513383
ns/iter (± 7205
)1.01
es/full/base/fixer
22711
ns/iter (± 33
)22716
ns/iter (± 116
)1.00
es/full/base/resolver_and_hygiene
84982
ns/iter (± 167
)83113
ns/iter (± 261
)1.02
serialization of serde
125
ns/iter (± 0
)123
ns/iter (± 0
)1.02
css/minify/libraries/bootstrap
27740219
ns/iter (± 170878
)27463476
ns/iter (± 127463
)1.01
css/visitor/compare/clone
2102054
ns/iter (± 6027
)2132511
ns/iter (± 26220
)0.99
css/visitor/compare/visit_mut_span
2321407
ns/iter (± 9029
)2278829
ns/iter (± 12891
)1.02
css/visitor/compare/visit_mut_span_panic
2362299
ns/iter (± 5053
)2338728
ns/iter (± 25187
)1.01
css/visitor/compare/fold_span
3091433
ns/iter (± 12084
)3083250
ns/iter (± 8883
)1.00
css/visitor/compare/fold_span_panic
3264311
ns/iter (± 14972
)3220070
ns/iter (± 10083
)1.01
css/lexer/bootstrap_5_1_3
5134481
ns/iter (± 2971
)5140793
ns/iter (± 14545
)1.00
css/lexer/foundation_6_7_4
4334645
ns/iter (± 5976
)4305617
ns/iter (± 8982
)1.01
css/lexer/tailwind_3_1_1
822617
ns/iter (± 811
)812652
ns/iter (± 3449
)1.01
css/parser/bootstrap_5_1_3
21004371
ns/iter (± 160406
)20904122
ns/iter (± 139286
)1.00
css/parser/foundation_6_7_4
16710794
ns/iter (± 46687
)16669212
ns/iter (± 74998
)1.00
css/parser/tailwind_3_1_1
3240105
ns/iter (± 4425
)3215097
ns/iter (± 16984
)1.01
es/codegen/colors
328269
ns/iter (± 185596
)327663
ns/iter (± 185315
)1.00
es/codegen/large
1254198
ns/iter (± 658348
)1237986
ns/iter (± 642679
)1.01
es/codegen/with-parser/colors
47217
ns/iter (± 286
)47378
ns/iter (± 251
)1.00
es/codegen/with-parser/large
512148
ns/iter (± 1717
)508924
ns/iter (± 2585
)1.01
es/minify/libraries/antd
1342774017
ns/iter (± 17838871
)1327719590
ns/iter (± 17030034
)1.01
es/minify/libraries/d3
252237294
ns/iter (± 2716727
)247256109
ns/iter (± 1164884
)1.02
es/minify/libraries/echarts
1025233343
ns/iter (± 11360448
)1002629585
ns/iter (± 7736466
)1.02
es/minify/libraries/jquery
80150811
ns/iter (± 1502732
)77954881
ns/iter (± 756240
)1.03
es/minify/libraries/lodash
95368834
ns/iter (± 1200564
)93043504
ns/iter (± 897382
)1.02
es/minify/libraries/moment
46121629
ns/iter (± 438334
)45195742
ns/iter (± 293645
)1.02
es/minify/libraries/react
17200270
ns/iter (± 221050
)16880614
ns/iter (± 68635
)1.02
es/minify/libraries/terser
211084374
ns/iter (± 3538709
)205922514
ns/iter (± 1979632
)1.03
es/minify/libraries/three
357384225
ns/iter (± 5068194
)348213835
ns/iter (± 3490802
)1.03
es/minify/libraries/typescript
2494169630
ns/iter (± 15026270
)2475162640
ns/iter (± 10482907
)1.01
es/minify/libraries/victory
553995721
ns/iter (± 10930661
)527929146
ns/iter (± 2841263
)1.05
es/minify/libraries/vue
115366493
ns/iter (± 712142
)113514763
ns/iter (± 906452
)1.02
es/visitor/compare/clone
2315161
ns/iter (± 7852
)2313269
ns/iter (± 9290
)1.00
es/visitor/compare/visit_mut_span
2693103
ns/iter (± 3039
)2670596
ns/iter (± 7419
)1.01
es/visitor/compare/visit_mut_span_panic
2738488
ns/iter (± 3705
)2723669
ns/iter (± 9253
)1.01
es/visitor/compare/fold_span
3792718
ns/iter (± 5431
)3788092
ns/iter (± 21559
)1.00
es/visitor/compare/fold_span_panic
3926577
ns/iter (± 11462
)3927439
ns/iter (± 26393
)1.00
es/lexer/colors
13269
ns/iter (± 38
)13032
ns/iter (± 49
)1.02
es/lexer/angular
6364330
ns/iter (± 10092
)6318964
ns/iter (± 42463
)1.01
es/lexer/backbone
788193
ns/iter (± 925
)776403
ns/iter (± 2600
)1.02
es/lexer/jquery
4411043
ns/iter (± 4891
)4365476
ns/iter (± 21375
)1.01
es/lexer/jquery mobile
6891729
ns/iter (± 3733
)6810831
ns/iter (± 28402
)1.01
es/lexer/mootools
3466980
ns/iter (± 3097
)3441384
ns/iter (± 13749
)1.01
es/lexer/underscore
651874
ns/iter (± 563
)643500
ns/iter (± 1758
)1.01
es/lexer/three
20869632
ns/iter (± 37289
)20706845
ns/iter (± 94713
)1.01
es/lexer/yui
3868671
ns/iter (± 3058
)3825730
ns/iter (± 13113
)1.01
es/parser/colors
29324
ns/iter (± 39
)29042
ns/iter (± 151
)1.01
es/parser/angular
15042745
ns/iter (± 178688
)14763146
ns/iter (± 100946
)1.02
es/parser/backbone
2159993
ns/iter (± 10468
)2149872
ns/iter (± 11182
)1.00
es/parser/jquery
11713776
ns/iter (± 112865
)11586266
ns/iter (± 85764
)1.01
es/parser/jquery mobile
18298846
ns/iter (± 93563
)17930085
ns/iter (± 87467
)1.02
es/parser/mootools
8970302
ns/iter (± 30585
)8883797
ns/iter (± 30281
)1.01
es/parser/underscore
1823666
ns/iter (± 11212
)1807406
ns/iter (± 16747
)1.01
es/parser/three
53741207
ns/iter (± 371018
)51970765
ns/iter (± 675110
)1.03
es/parser/yui
9039571
ns/iter (± 70675
)8951258
ns/iter (± 123127
)1.01
es/preset-env/usage/builtin_type
141827
ns/iter (± 34729
)140195
ns/iter (± 34484
)1.01
es/preset-env/usage/property
20241
ns/iter (± 98
)19858
ns/iter (± 97
)1.02
es/resolver/typescript
110812529
ns/iter (± 3964694
)108249844
ns/iter (± 1958341
)1.02
es/fixer/typescript
79063631
ns/iter (± 549409
)76302204
ns/iter (± 569953
)1.04
es/hygiene/typescript
167250090
ns/iter (± 1448387
)165244778
ns/iter (± 1200456
)1.01
es/resolver_with_hygiene/typescript
303995859
ns/iter (± 2665938
)298881740
ns/iter (± 2518858
)1.02
es/visitor/base-perf/module_clone
81553
ns/iter (± 330
)80481
ns/iter (± 633
)1.01
es/visitor/base-perf/fold_empty
90573
ns/iter (± 285
)89638
ns/iter (± 791
)1.01
es/visitor/base-perf/fold_noop_impl_all
90666
ns/iter (± 467
)90169
ns/iter (± 581
)1.01
es/visitor/base-perf/fold_noop_impl_vec
90686
ns/iter (± 508
)90670
ns/iter (± 654
)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
42
ns/iter (± 0
)42
ns/iter (± 0
)1
es/visitor/base-perf/boxing_boxed
102
ns/iter (± 0
)102
ns/iter (± 0
)1
es/visitor/base-perf/boxing_unboxed
78
ns/iter (± 0
)77
ns/iter (± 0
)1.01
es/visitor/base-perf/visit_contains_this
3502
ns/iter (± 73
)3591
ns/iter (± 94
)0.98
es/base/parallel/resolver/typescript
5640906172
ns/iter (± 241261595
)5694497487
ns/iter (± 487269330
)0.99
es/base/parallel/hygiene/typescript
1983362158
ns/iter (± 39814403
)2002897884
ns/iter (± 19648338
)0.99
misc/visitors/time-complexity/time 5
98
ns/iter (± 0
)98
ns/iter (± 0
)1
misc/visitors/time-complexity/time 10
332
ns/iter (± 5
)328
ns/iter (± 1
)1.01
misc/visitors/time-complexity/time 15
655
ns/iter (± 19
)630
ns/iter (± 2
)1.04
misc/visitors/time-complexity/time 20
1228
ns/iter (± 22
)1210
ns/iter (± 15
)1.01
misc/visitors/time-complexity/time 40
6548
ns/iter (± 9
)6511
ns/iter (± 26
)1.01
misc/visitors/time-complexity/time 60
17185
ns/iter (± 105
)16824
ns/iter (± 124
)1.02
es/full-target/es2016
253822
ns/iter (± 568
)253372
ns/iter (± 838
)1.00
es/full-target/es2017
246893
ns/iter (± 342
)243801
ns/iter (± 498
)1.01
es/full-target/es2018
236584
ns/iter (± 485
)232943
ns/iter (± 1032
)1.02
es2020_nullish_coalescing
92950
ns/iter (± 280
)91603
ns/iter (± 482
)1.01
es2020_optional_chaining
124885
ns/iter (± 354
)123961
ns/iter (± 668
)1.01
es2022_class_properties
149840
ns/iter (± 253
)148682
ns/iter (± 602
)1.01
es2018_object_rest_spread
96810
ns/iter (± 124
)95013
ns/iter (± 528
)1.02
es2019_optional_catch_binding
86097
ns/iter (± 127
)83641
ns/iter (± 279
)1.03
es2017_async_to_generator
86399
ns/iter (± 221
)84336
ns/iter (± 378
)1.02
es2016_exponentiation
90574
ns/iter (± 270
)88773
ns/iter (± 528
)1.02
es2015_arrow
93994
ns/iter (± 306
)92089
ns/iter (± 422
)1.02
es2015_block_scoped_fn
92516
ns/iter (± 314
)91581
ns/iter (± 290
)1.01
es2015_block_scoping
170345
ns/iter (± 257
)169326
ns/iter (± 489
)1.01
This comment was automatically generated by workflow using github-action-benchmark.