File tree 4 files changed +77
-2
lines changed
swc/tests/fixture/issues-7xxx/7736/case1
swc_ecma_transforms_compat/src/es2015
4 files changed +77
-2
lines changed Original file line number Diff line number Diff line change
1
+ {
2
+ "jsc" : {
3
+ "parser" : {
4
+ "syntax" : " ecmascript" ,
5
+ "jsx" : false
6
+ },
7
+ "target" : " es5" ,
8
+ "loose" : true
9
+ },
10
+ "isModule" : false
11
+ }
Original file line number Diff line number Diff line change
1
+ [
2
+ 1 ,
3
+ 2 ,
4
+ ...[ 'foo' , 3 ] ,
5
+ 4 ,
6
+ ...[ 'bar' , 5 ] ,
7
+ [ 'baz' , 6 ] ,
8
+ 7 ,
9
+ 8 ,
10
+ 9 ,
11
+ ]
Original file line number Diff line number Diff line change
1
+ [ ] . concat ( [
2
+ 1 ,
3
+ 2
4
+ ] , [
5
+ "foo" ,
6
+ 3
7
+ ] , [
8
+ 4
9
+ ] , [
10
+ "bar" ,
11
+ 5
12
+ ] , [
13
+ [
14
+ "baz" ,
15
+ 6
16
+ ] ,
17
+ 7 ,
18
+ 8 ,
19
+ 9
20
+ ] ) ;
Original file line number Diff line number Diff line change @@ -251,12 +251,45 @@ impl Spread {
251
251
} ;
252
252
}
253
253
254
- // shorthand [].concat(arr1, arr2) shoule be used under loose mode
254
+ // Shorthand [].concat(arr1, arr2) should be used under loose mode.
255
+ // Array.prototype.concat has the lovely feature by which arrays passed
256
+ // to it are depth-1 flattened. This effectively implements the loose
257
+ // spread. But if any arrays that are not being spread are present, they
258
+ // will be incorrectly flattened. The solution is to wrap every
259
+ // contiguous slice of non-spread args in an array, which will protect
260
+ // array args from being flattened.
255
261
if self . c . loose {
256
262
let mut arg_list = vec ! [ ] ;
263
+ let mut current_elems = vec ! [ ] ;
257
264
for arg in args. flatten ( ) {
258
265
let expr = arg. expr ;
259
- arg_list. push ( expr. as_arg ( ) ) ;
266
+ match arg. spread {
267
+ Some ( _) => {
268
+ if !current_elems. is_empty ( ) {
269
+ arg_list. push (
270
+ ArrayLit {
271
+ span : DUMMY_SP ,
272
+ elems : current_elems,
273
+ }
274
+ . as_arg ( ) ,
275
+ ) ;
276
+ current_elems = vec ! [ ] ;
277
+ }
278
+ arg_list. push ( expr. as_arg ( ) ) ;
279
+ }
280
+ None => {
281
+ current_elems. push ( Some ( expr. as_arg ( ) ) ) ;
282
+ }
283
+ }
284
+ }
285
+ if !current_elems. is_empty ( ) {
286
+ arg_list. push (
287
+ ArrayLit {
288
+ span : DUMMY_SP ,
289
+ elems : current_elems,
290
+ }
291
+ . as_arg ( ) ,
292
+ ) ;
260
293
}
261
294
262
295
return Expr :: Call ( CallExpr {
You can’t perform that action at this time.
1 commit comments
github-actions[bot] commentedon Aug 7, 2023
Benchmark
es/full/bugs-1
291452
ns/iter (± 8129
)304611
ns/iter (± 6064
)0.96
es/full/minify/libraries/antd
1310136475
ns/iter (± 12818778
)1351980626
ns/iter (± 13265254
)0.97
es/full/minify/libraries/d3
283337256
ns/iter (± 4852130
)287109775
ns/iter (± 5171984
)0.99
es/full/minify/libraries/echarts
1062681650
ns/iter (± 7669528
)1113357930
ns/iter (± 15877315
)0.95
es/full/minify/libraries/jquery
84881586
ns/iter (± 200370
)85627841
ns/iter (± 292509
)0.99
es/full/minify/libraries/lodash
98815755
ns/iter (± 297775
)99406274
ns/iter (± 440203
)0.99
es/full/minify/libraries/moment
49988976
ns/iter (± 89177
)50170311
ns/iter (± 169746
)1.00
es/full/minify/libraries/react
18000209
ns/iter (± 42022
)18179381
ns/iter (± 88470
)0.99
es/full/minify/libraries/terser
220096590
ns/iter (± 2163411
)226528784
ns/iter (± 2479283
)0.97
es/full/minify/libraries/three
388068368
ns/iter (± 1542129
)409311239
ns/iter (± 8795904
)0.95
es/full/minify/libraries/typescript
2688971799
ns/iter (± 11255499
)2755793001
ns/iter (± 11567024
)0.98
es/full/minify/libraries/victory
564446598
ns/iter (± 4384572
)585847601
ns/iter (± 13282001
)0.96
es/full/minify/libraries/vue
120673841
ns/iter (± 332847
)122059951
ns/iter (± 675238
)0.99
es/full/codegen/es3
33913
ns/iter (± 111
)34313
ns/iter (± 69
)0.99
es/full/codegen/es5
33812
ns/iter (± 104
)34197
ns/iter (± 117
)0.99
es/full/codegen/es2015
33884
ns/iter (± 104
)34277
ns/iter (± 111
)0.99
es/full/codegen/es2016
33858
ns/iter (± 110
)34221
ns/iter (± 66
)0.99
es/full/codegen/es2017
33908
ns/iter (± 89
)34265
ns/iter (± 162
)0.99
es/full/codegen/es2018
33897
ns/iter (± 122
)34256
ns/iter (± 88
)0.99
es/full/codegen/es2019
33864
ns/iter (± 138
)34285
ns/iter (± 103
)0.99
es/full/codegen/es2020
33902
ns/iter (± 146
)34229
ns/iter (± 88
)0.99
es/full/all/es3
172669283
ns/iter (± 1284687
)173302261
ns/iter (± 669232
)1.00
es/full/all/es5
163572272
ns/iter (± 966224
)164834820
ns/iter (± 2076179
)0.99
es/full/all/es2015
123757811
ns/iter (± 744978
)125405254
ns/iter (± 985763
)0.99
es/full/all/es2016
122415457
ns/iter (± 777498
)124114410
ns/iter (± 1021988
)0.99
es/full/all/es2017
121754354
ns/iter (± 828884
)123728469
ns/iter (± 472193
)0.98
es/full/all/es2018
119469435
ns/iter (± 745330
)121482747
ns/iter (± 876580
)0.98
es/full/all/es2019
119001900
ns/iter (± 1012503
)121123844
ns/iter (± 1003417
)0.98
es/full/all/es2020
113711561
ns/iter (± 906171
)116068942
ns/iter (± 795746
)0.98
es/full/parser
530895
ns/iter (± 5980
)538508
ns/iter (± 6570
)0.99
es/full/base/fixer
18144
ns/iter (± 190
)17190
ns/iter (± 73
)1.06
es/full/base/resolver_and_hygiene
81024
ns/iter (± 245
)80343
ns/iter (± 93
)1.01
serialization of serde
300
ns/iter (± 2
)294
ns/iter (± 0
)1.02
css/minify/libraries/bootstrap
28137144
ns/iter (± 155328
)30159893
ns/iter (± 304748
)0.93
css/visitor/compare/clone
1629180
ns/iter (± 2363
)1644030
ns/iter (± 4263
)0.99
css/visitor/compare/visit_mut_span
1774596
ns/iter (± 9783
)1768789
ns/iter (± 5336
)1.00
css/visitor/compare/visit_mut_span_panic
1854224
ns/iter (± 6123
)1854257
ns/iter (± 5601
)1.00
css/visitor/compare/fold_span
2609360
ns/iter (± 16198
)2588600
ns/iter (± 13902
)1.01
css/visitor/compare/fold_span_panic
2765746
ns/iter (± 17962
)2765447
ns/iter (± 17797
)1.00
css/lexer/bootstrap_5_1_3
4400582
ns/iter (± 3559
)4545648
ns/iter (± 11648
)0.97
css/lexer/foundation_6_7_4
3699952
ns/iter (± 2222
)3839590
ns/iter (± 2693
)0.96
css/lexer/tailwind_3_1_1
703566
ns/iter (± 341
)724657
ns/iter (± 840
)0.97
css/parser/bootstrap_5_1_3
19654874
ns/iter (± 27145
)18826427
ns/iter (± 43795
)1.04
css/parser/foundation_6_7_4
15885087
ns/iter (± 22168
)15128825
ns/iter (± 336787
)1.05
css/parser/tailwind_3_1_1
3031988
ns/iter (± 5598
)2930432
ns/iter (± 7372
)1.03
es/codegen/colors
739125
ns/iter (± 406214
)736931
ns/iter (± 404624
)1.00
es/codegen/large
2901337
ns/iter (± 1528604
)3142810
ns/iter (± 1677548
)0.92
es/codegen/with-parser/colors
45074
ns/iter (± 181
)45417
ns/iter (± 482
)0.99
es/codegen/with-parser/large
496948
ns/iter (± 1908
)483585
ns/iter (± 1150
)1.03
es/minify/libraries/antd
1151406924
ns/iter (± 14087365
)1194922172
ns/iter (± 14047234
)0.96
es/minify/libraries/d3
244792279
ns/iter (± 1664646
)244916359
ns/iter (± 2415276
)1.00
es/minify/libraries/echarts
924180348
ns/iter (± 15870465
)951955854
ns/iter (± 13297754
)0.97
es/minify/libraries/jquery
74212079
ns/iter (± 176122
)74710698
ns/iter (± 1083377
)0.99
es/minify/libraries/lodash
89968283
ns/iter (± 184435
)89000965
ns/iter (± 294654
)1.01
es/minify/libraries/moment
43814745
ns/iter (± 280635
)43839026
ns/iter (± 212452
)1.00
es/minify/libraries/react
16025188
ns/iter (± 17682
)16144960
ns/iter (± 56754
)0.99
es/minify/libraries/terser
189154695
ns/iter (± 1118452
)191433556
ns/iter (± 3337827
)0.99
es/minify/libraries/three
336427364
ns/iter (± 4404057
)330535480
ns/iter (± 4183569
)1.02
es/minify/libraries/typescript
2297939915
ns/iter (± 15860531
)2331996731
ns/iter (± 23379655
)0.99
es/minify/libraries/victory
477804203
ns/iter (± 5844066
)495862824
ns/iter (± 8265547
)0.96
es/minify/libraries/vue
107797097
ns/iter (± 263752
)109825185
ns/iter (± 1035668
)0.98
es/visitor/compare/clone
1921777
ns/iter (± 6900
)1967309
ns/iter (± 5985
)0.98
es/visitor/compare/visit_mut_span
2262674
ns/iter (± 7858
)2286596
ns/iter (± 8099
)0.99
es/visitor/compare/visit_mut_span_panic
2300957
ns/iter (± 4725
)2339690
ns/iter (± 4159
)0.98
es/visitor/compare/fold_span
3330062
ns/iter (± 6090
)3390957
ns/iter (± 9847
)0.98
es/visitor/compare/fold_span_panic
3459331
ns/iter (± 8030
)3545470
ns/iter (± 14466
)0.98
es/lexer/colors
13040
ns/iter (± 41
)13289
ns/iter (± 28
)0.98
es/lexer/angular
6039514
ns/iter (± 2304
)6095098
ns/iter (± 5032
)0.99
es/lexer/backbone
778081
ns/iter (± 1327
)795510
ns/iter (± 478
)0.98
es/lexer/jquery
4397251
ns/iter (± 4151
)4512857
ns/iter (± 7061
)0.97
es/lexer/jquery mobile
6757569
ns/iter (± 6888
)6894191
ns/iter (± 3812
)0.98
es/lexer/mootools
3494119
ns/iter (± 3869
)3568940
ns/iter (± 4574
)0.98
es/lexer/underscore
650005
ns/iter (± 415
)675493
ns/iter (± 797
)0.96
es/lexer/three
20948970
ns/iter (± 17199
)21417600
ns/iter (± 24584
)0.98
es/lexer/yui
3777819
ns/iter (± 1694
)3867867
ns/iter (± 4699
)0.98
es/parser/colors
27258
ns/iter (± 70
)27114
ns/iter (± 47
)1.01
es/parser/angular
13630019
ns/iter (± 55096
)13638878
ns/iter (± 94419
)1.00
es/parser/backbone
2030416
ns/iter (± 8188
)2000314
ns/iter (± 11183
)1.02
es/parser/jquery
10990422
ns/iter (± 45832
)10962032
ns/iter (± 89225
)1.00
es/parser/jquery mobile
16872763
ns/iter (± 44358
)16794036
ns/iter (± 171872
)1.00
es/parser/mootools
8479248
ns/iter (± 22512
)8418050
ns/iter (± 31758
)1.01
es/parser/underscore
1747614
ns/iter (± 8997
)1730913
ns/iter (± 11081
)1.01
es/parser/three
47758185
ns/iter (± 461081
)48206891
ns/iter (± 435035
)0.99
es/parser/yui
8310818
ns/iter (± 51604
)8270789
ns/iter (± 35678
)1.00
es/preset-env/usage/builtin_type
137957
ns/iter (± 32106
)138288
ns/iter (± 32666
)1.00
es/preset-env/usage/property
16489
ns/iter (± 62
)16637
ns/iter (± 35
)0.99
es/resolver/typescript
89002822
ns/iter (± 1138258
)90815550
ns/iter (± 1030956
)0.98
es/fixer/typescript
64636956
ns/iter (± 549887
)65088772
ns/iter (± 732016
)0.99
es/hygiene/typescript
130328161
ns/iter (± 1247508
)133423600
ns/iter (± 1019738
)0.98
es/resolver_with_hygiene/typescript
243721284
ns/iter (± 1390082
)248468567
ns/iter (± 3262527
)0.98
es/visitor/base-perf/module_clone
60220
ns/iter (± 283
)58671
ns/iter (± 140
)1.03
es/visitor/base-perf/fold_empty
63992
ns/iter (± 488
)62376
ns/iter (± 237
)1.03
es/visitor/base-perf/fold_noop_impl_all
64098
ns/iter (± 1428
)63209
ns/iter (± 640
)1.01
es/visitor/base-perf/fold_noop_impl_vec
63239
ns/iter (± 247
)63020
ns/iter (± 423
)1.00
es/visitor/base-perf/boxing_boxed_clone
56
ns/iter (± 0
)58
ns/iter (± 0
)0.97
es/visitor/base-perf/boxing_unboxed_clone
39
ns/iter (± 0
)39
ns/iter (± 0
)1
es/visitor/base-perf/boxing_boxed
106
ns/iter (± 0
)109
ns/iter (± 0
)0.97
es/visitor/base-perf/boxing_unboxed
75
ns/iter (± 0
)77
ns/iter (± 0
)0.97
es/visitor/base-perf/visit_empty
0
ns/iter (± 0
)0
ns/iter (± 0
)NaN
es/visitor/base-perf/visit_contains_this
2523
ns/iter (± 14
)2536
ns/iter (± 10
)0.99
es/base/parallel/resolver/typescript
3783977692
ns/iter (± 224010862
)4190055955
ns/iter (± 196233678
)0.90
es/base/parallel/hygiene/typescript
1451130430
ns/iter (± 10839597
)1462052990
ns/iter (± 15382848
)0.99
misc/visitors/time-complexity/time 5
136
ns/iter (± 2
)156
ns/iter (± 5
)0.87
misc/visitors/time-complexity/time 10
375
ns/iter (± 5
)404
ns/iter (± 15
)0.93
misc/visitors/time-complexity/time 15
671
ns/iter (± 8
)901
ns/iter (± 26
)0.74
misc/visitors/time-complexity/time 20
1053
ns/iter (± 21
)1496
ns/iter (± 88
)0.70
misc/visitors/time-complexity/time 40
3600
ns/iter (± 158
)4359
ns/iter (± 274
)0.83
misc/visitors/time-complexity/time 60
8233
ns/iter (± 4
)11120
ns/iter (± 669
)0.74
es/full-target/es2016
230231
ns/iter (± 807
)232627
ns/iter (± 405
)0.99
es/full-target/es2017
219617
ns/iter (± 812
)222057
ns/iter (± 873
)0.99
es/full-target/es2018
209698
ns/iter (± 746
)209120
ns/iter (± 675
)1.00
es2020_nullish_coalescing
68969
ns/iter (± 352
)70224
ns/iter (± 226
)0.98
es2020_optional_chaining
76588
ns/iter (± 169
)81869
ns/iter (± 344
)0.94
es2022_class_properties
117553
ns/iter (± 325
)119609
ns/iter (± 334
)0.98
es2018_object_rest_spread
72707
ns/iter (± 215
)76278
ns/iter (± 504
)0.95
es2019_optional_catch_binding
62273
ns/iter (± 228
)64075
ns/iter (± 193
)0.97
es2017_async_to_generator
62540
ns/iter (± 271
)64376
ns/iter (± 178
)0.97
es2016_exponentiation
66262
ns/iter (± 299
)69222
ns/iter (± 231
)0.96
es2015_arrow
69843
ns/iter (± 206
)72477
ns/iter (± 195
)0.96
es2015_block_scoped_fn
66947
ns/iter (± 217
)68117
ns/iter (± 276
)0.98
es2015_block_scoping
117722
ns/iter (± 745
)123642
ns/iter (± 637
)0.95
This comment was automatically generated by workflow using github-action-benchmark.