File tree 2 files changed +33
-4
lines changed
crates/swc_ecma_transforms_compat
2 files changed +33
-4
lines changed Original file line number Diff line number Diff line change
1
+ use std:: mem;
2
+
1
3
use swc_common:: { util:: take:: Take , DUMMY_SP } ;
2
4
use swc_ecma_ast:: * ;
3
5
use swc_ecma_transforms_base:: perf:: Parallel ;
@@ -173,34 +175,44 @@ impl VisitMut for Operators {
173
175
}
174
176
}
175
177
178
+ /// [swc_ecma_ast::ModuleItem] is the top level Item in the current
179
+ /// implementation of JavaScript until the proposal for
180
+ /// [module-declarations] and [module-expressions] are officially added.
181
+ ///
182
+ /// [module declarations]: https://github.com/tc39/proposal-module-declarations.
183
+ /// [module-expressions]: https://github.com/tc39/proposal-module-expressions
176
184
fn visit_mut_module_items ( & mut self , n : & mut Vec < ModuleItem > ) {
185
+ let vars = self . vars . take ( ) ;
177
186
n. visit_mut_children_with ( self ) ;
178
187
179
- if !self . vars . is_empty ( ) {
188
+ let vars = mem:: replace ( & mut self . vars , vars) ;
189
+ if !vars. is_empty ( ) {
180
190
prepend_stmt (
181
191
n,
182
192
VarDecl {
183
193
span : DUMMY_SP ,
184
194
kind : VarDeclKind :: Var ,
185
195
declare : false ,
186
- decls : self . vars . take ( ) ,
196
+ decls : vars,
187
197
}
188
198
. into ( ) ,
189
199
)
190
200
}
191
201
}
192
202
193
203
fn visit_mut_stmts ( & mut self , n : & mut Vec < Stmt > ) {
204
+ let vars = self . vars . take ( ) ;
194
205
n. visit_mut_children_with ( self ) ;
195
206
196
- if !self . vars . is_empty ( ) {
207
+ let vars = mem:: replace ( & mut self . vars , vars) ;
208
+ if !vars. is_empty ( ) {
197
209
prepend_stmt (
198
210
n,
199
211
VarDecl {
200
212
span : DUMMY_SP ,
201
213
kind : VarDeclKind :: Var ,
202
214
declare : false ,
203
- decls : self . vars . take ( ) ,
215
+ decls : vars,
204
216
}
205
217
. into ( ) ,
206
218
)
Original file line number Diff line number Diff line change @@ -79,6 +79,23 @@ test!(
79
79
"
80
80
) ;
81
81
82
+ test ! (
83
+ syntax( ) ,
84
+ |_| tr( ) ,
85
+ issue_7169,
86
+ "function myFunc(options) {
87
+ options.context ||= {}
88
+ const closure = function() {}
89
+ }" ,
90
+ "
91
+ function myFunc(options) {
92
+ var _options;
93
+ (_options = options).context || (_options.context = {});
94
+ const closure = function() {};
95
+ }
96
+ "
97
+ ) ;
98
+
82
99
test_exec ! (
83
100
syntax( ) ,
84
101
|_| tr( ) ,
You can’t perform that action at this time.
1 commit comments
github-actions[bot] commentedon Mar 30, 2023
Benchmark
es/full/bugs-1
293737
ns/iter (± 12006
)310573
ns/iter (± 7616
)0.95
es/full/minify/libraries/antd
1467348958
ns/iter (± 21021114
)1655685673
ns/iter (± 15279300
)0.89
es/full/minify/libraries/d3
281687139
ns/iter (± 5722852
)305183655
ns/iter (± 6987096
)0.92
es/full/minify/libraries/echarts
1092316263
ns/iter (± 22563298
)1273011758
ns/iter (± 11514661
)0.86
es/full/minify/libraries/jquery
86667351
ns/iter (± 557185
)91481560
ns/iter (± 660085
)0.95
es/full/minify/libraries/lodash
101165870
ns/iter (± 1218798
)106271655
ns/iter (± 1135306
)0.95
es/full/minify/libraries/moment
50294067
ns/iter (± 477791
)52868094
ns/iter (± 360026
)0.95
es/full/minify/libraries/react
18591157
ns/iter (± 123254
)19380410
ns/iter (± 163680
)0.96
es/full/minify/libraries/terser
229216857
ns/iter (± 1927325
)251678979
ns/iter (± 3284225
)0.91
es/full/minify/libraries/three
398122032
ns/iter (± 5184361
)448765914
ns/iter (± 5268233
)0.89
es/full/minify/libraries/typescript
2810404541
ns/iter (± 22267082
)3120238668
ns/iter (± 16004181
)0.90
es/full/minify/libraries/victory
598273425
ns/iter (± 11597093
)698293530
ns/iter (± 8489142
)0.86
es/full/minify/libraries/vue
124943846
ns/iter (± 1295444
)133166982
ns/iter (± 619218
)0.94
es/full/codegen/es3
27454
ns/iter (± 189
)28476
ns/iter (± 55
)0.96
es/full/codegen/es5
28006
ns/iter (± 186
)28613
ns/iter (± 31
)0.98
es/full/codegen/es2015
27571
ns/iter (± 297
)28566
ns/iter (± 37
)0.97
es/full/codegen/es2016
27409
ns/iter (± 254
)28528
ns/iter (± 48
)0.96
es/full/codegen/es2017
27631
ns/iter (± 177
)28539
ns/iter (± 44
)0.97
es/full/codegen/es2018
27606
ns/iter (± 188
)28592
ns/iter (± 41
)0.97
es/full/codegen/es2019
27444
ns/iter (± 192
)28556
ns/iter (± 26
)0.96
es/full/codegen/es2020
27352
ns/iter (± 143
)28592
ns/iter (± 35
)0.96
es/full/all/es3
179147409
ns/iter (± 2724644
)184634738
ns/iter (± 2153135
)0.97
es/full/all/es5
173643822
ns/iter (± 3038060
)172542744
ns/iter (± 3141689
)1.01
es/full/all/es2015
130834299
ns/iter (± 2532076
)134825965
ns/iter (± 1579401
)0.97
es/full/all/es2016
129410769
ns/iter (± 1391938
)133230657
ns/iter (± 1102992
)0.97
es/full/all/es2017
126809517
ns/iter (± 1510682
)131357056
ns/iter (± 1643288
)0.97
es/full/all/es2018
123274994
ns/iter (± 1290563
)126875600
ns/iter (± 1155014
)0.97
es/full/all/es2019
121782056
ns/iter (± 1054058
)125695140
ns/iter (± 1832035
)0.97
es/full/all/es2020
116327599
ns/iter (± 923075
)118764557
ns/iter (± 662712
)0.98
es/full/parser
498502
ns/iter (± 7683
)522091
ns/iter (± 8342
)0.95
es/full/base/fixer
23356
ns/iter (± 179
)22653
ns/iter (± 33
)1.03
es/full/base/resolver_and_hygiene
81787
ns/iter (± 585
)84496
ns/iter (± 137
)0.97
serialization of serde
119
ns/iter (± 2
)126
ns/iter (± 0
)0.94
css/minify/libraries/bootstrap
26949968
ns/iter (± 298881
)28141315
ns/iter (± 162086
)0.96
css/visitor/compare/clone
2053791
ns/iter (± 23138
)2140557
ns/iter (± 42383
)0.96
css/visitor/compare/visit_mut_span
2259162
ns/iter (± 29669
)2315020
ns/iter (± 7648
)0.98
css/visitor/compare/visit_mut_span_panic
2329138
ns/iter (± 11996
)2382548
ns/iter (± 6482
)0.98
css/visitor/compare/fold_span
2961247
ns/iter (± 42737
)3084131
ns/iter (± 15389
)0.96
css/visitor/compare/fold_span_panic
3142937
ns/iter (± 26157
)3258936
ns/iter (± 10284
)0.96
css/lexer/bootstrap_5_1_3
5051710
ns/iter (± 46936
)5113849
ns/iter (± 1358
)0.99
css/lexer/foundation_6_7_4
4235611
ns/iter (± 28129
)4333383
ns/iter (± 1648
)0.98
css/lexer/tailwind_3_1_1
793568
ns/iter (± 4593
)819753
ns/iter (± 206
)0.97
css/parser/bootstrap_5_1_3
20061035
ns/iter (± 156867
)21133991
ns/iter (± 133033
)0.95
css/parser/foundation_6_7_4
15960424
ns/iter (± 84637
)16644967
ns/iter (± 57818
)0.96
css/parser/tailwind_3_1_1
3109506
ns/iter (± 21713
)3201637
ns/iter (± 3646
)0.97
es/codegen/colors
317439
ns/iter (± 180715
)325410
ns/iter (± 184498
)0.98
es/codegen/large
1191768
ns/iter (± 616978
)1092420
ns/iter (± 552959
)1.09
es/codegen/with-parser/colors
46147
ns/iter (± 387
)47269
ns/iter (± 81
)0.98
es/codegen/with-parser/large
489982
ns/iter (± 4473
)507926
ns/iter (± 2072
)0.96
es/minify/libraries/antd
1244742222
ns/iter (± 22999900
)1451031002
ns/iter (± 12940828
)0.86
es/minify/libraries/d3
240478029
ns/iter (± 2490936
)259422440
ns/iter (± 2764506
)0.93
es/minify/libraries/echarts
967658528
ns/iter (± 16397593
)1097567034
ns/iter (± 11992089
)0.88
es/minify/libraries/jquery
76109712
ns/iter (± 792885
)80752407
ns/iter (± 565357
)0.94
es/minify/libraries/lodash
93444141
ns/iter (± 984097
)96166360
ns/iter (± 773636
)0.97
es/minify/libraries/moment
44518841
ns/iter (± 348613
)46258310
ns/iter (± 383040
)0.96
es/minify/libraries/react
16679166
ns/iter (± 113963
)17125933
ns/iter (± 122407
)0.97
es/minify/libraries/terser
196120544
ns/iter (± 2701501
)217739793
ns/iter (± 2564270
)0.90
es/minify/libraries/three
329198603
ns/iter (± 3409965
)374754332
ns/iter (± 5188191
)0.88
es/minify/libraries/typescript
2380015024
ns/iter (± 18674618
)2675912407
ns/iter (± 17611453
)0.89
es/minify/libraries/victory
498687229
ns/iter (± 5108079
)592714094
ns/iter (± 9869612
)0.84
es/minify/libraries/vue
111231098
ns/iter (± 1399187
)116815636
ns/iter (± 1060100
)0.95
es/visitor/compare/clone
2295209
ns/iter (± 16896
)2347263
ns/iter (± 10761
)0.98
es/visitor/compare/visit_mut_span
2678885
ns/iter (± 23035
)2727461
ns/iter (± 4644
)0.98
es/visitor/compare/visit_mut_span_panic
2662789
ns/iter (± 40529
)2762658
ns/iter (± 4064
)0.96
es/visitor/compare/fold_span
3742449
ns/iter (± 33250
)3834399
ns/iter (± 6576
)0.98
es/visitor/compare/fold_span_panic
3873100
ns/iter (± 20570
)3939326
ns/iter (± 9108
)0.98
es/lexer/colors
12694
ns/iter (± 50
)12906
ns/iter (± 17
)0.98
es/lexer/angular
6302768
ns/iter (± 59361
)6316600
ns/iter (± 1752
)1.00
es/lexer/backbone
777480
ns/iter (± 5118
)777122
ns/iter (± 291
)1.00
es/lexer/jquery
4399174
ns/iter (± 32677
)4367738
ns/iter (± 2311
)1.01
es/lexer/jquery mobile
6918122
ns/iter (± 5168
)6805913
ns/iter (± 3954
)1.02
es/lexer/mootools
3455060
ns/iter (± 30703
)3413916
ns/iter (± 1115
)1.01
es/lexer/underscore
650594
ns/iter (± 1611
)643955
ns/iter (± 2227
)1.01
es/lexer/three
20493643
ns/iter (± 257692
)20682074
ns/iter (± 18182
)0.99
es/lexer/yui
3734099
ns/iter (± 29839
)3811512
ns/iter (± 15465
)0.98
es/parser/colors
28850
ns/iter (± 203
)29007
ns/iter (± 124
)0.99
es/parser/angular
14518674
ns/iter (± 126641
)15131606
ns/iter (± 153769
)0.96
es/parser/backbone
2076940
ns/iter (± 27134
)2146744
ns/iter (± 11918
)0.97
es/parser/jquery
11269029
ns/iter (± 93993
)12005720
ns/iter (± 179808
)0.94
es/parser/jquery mobile
17517300
ns/iter (± 123445
)19217572
ns/iter (± 258163
)0.91
es/parser/mootools
8629022
ns/iter (± 60505
)8934562
ns/iter (± 25957
)0.97
es/parser/underscore
1783947
ns/iter (± 12778
)1815985
ns/iter (± 9304
)0.98
es/parser/three
52204967
ns/iter (± 1765537
)55777560
ns/iter (± 326598
)0.94
es/parser/yui
8978863
ns/iter (± 115654
)9054058
ns/iter (± 80812
)0.99
es/preset-env/usage/builtin_type
140493
ns/iter (± 32926
)145565
ns/iter (± 34581
)0.97
es/preset-env/usage/property
19955
ns/iter (± 141
)21006
ns/iter (± 63
)0.95
es/resolver/typescript
110972229
ns/iter (± 2036118
)121375498
ns/iter (± 2609756
)0.91
es/fixer/typescript
75931051
ns/iter (± 919029
)87895778
ns/iter (± 1993675
)0.86
es/hygiene/typescript
174164572
ns/iter (± 6310119
)190054824
ns/iter (± 1070914
)0.92
es/resolver_with_hygiene/typescript
296876338
ns/iter (± 1771816
)330346195
ns/iter (± 2317008
)0.90
es/visitor/base-perf/module_clone
78877
ns/iter (± 484
)81143
ns/iter (± 507
)0.97
es/visitor/base-perf/fold_empty
88311
ns/iter (± 666
)90330
ns/iter (± 382
)0.98
es/visitor/base-perf/fold_noop_impl_all
88702
ns/iter (± 574
)90755
ns/iter (± 287
)0.98
es/visitor/base-perf/fold_noop_impl_vec
88535
ns/iter (± 1285
)90489
ns/iter (± 495
)0.98
es/visitor/base-perf/boxing_boxed_clone
54
ns/iter (± 0
)58
ns/iter (± 0
)0.93
es/visitor/base-perf/boxing_unboxed_clone
40
ns/iter (± 0
)43
ns/iter (± 0
)0.93
es/visitor/base-perf/boxing_boxed
98
ns/iter (± 0
)102
ns/iter (± 0
)0.96
es/visitor/base-perf/boxing_unboxed
75
ns/iter (± 0
)78
ns/iter (± 0
)0.96
es/visitor/base-perf/visit_contains_this
3476
ns/iter (± 50
)3446
ns/iter (± 67
)1.01
es/base/parallel/resolver/typescript
5966551437
ns/iter (± 500758070
)6266369265
ns/iter (± 568116739
)0.95
es/base/parallel/hygiene/typescript
1998097077
ns/iter (± 23932898
)2218254561
ns/iter (± 29379558
)0.90
misc/visitors/time-complexity/time 5
101
ns/iter (± 0
)102
ns/iter (± 0
)0.99
misc/visitors/time-complexity/time 10
335
ns/iter (± 10
)339
ns/iter (± 0
)0.99
misc/visitors/time-complexity/time 15
643
ns/iter (± 4
)659
ns/iter (± 0
)0.98
misc/visitors/time-complexity/time 20
1191
ns/iter (± 9
)1236
ns/iter (± 27
)0.96
misc/visitors/time-complexity/time 40
6542
ns/iter (± 108
)6715
ns/iter (± 44
)0.97
misc/visitors/time-complexity/time 60
16667
ns/iter (± 75
)17214
ns/iter (± 132
)0.97
es/full-target/es2016
253632
ns/iter (± 474
)252122
ns/iter (± 423
)1.01
es/full-target/es2017
246861
ns/iter (± 1067
)245040
ns/iter (± 444
)1.01
es/full-target/es2018
232643
ns/iter (± 1512
)235263
ns/iter (± 514
)0.99
es2020_nullish_coalescing
93112
ns/iter (± 624
)92571
ns/iter (± 173
)1.01
es2020_optional_chaining
123934
ns/iter (± 310
)124396
ns/iter (± 211
)1.00
es2022_class_properties
148459
ns/iter (± 963
)148573
ns/iter (± 315
)1.00
es2018_object_rest_spread
96517
ns/iter (± 382
)95984
ns/iter (± 224
)1.01
es2019_optional_catch_binding
85749
ns/iter (± 288
)85028
ns/iter (± 212
)1.01
es2017_async_to_generator
85478
ns/iter (± 729
)85440
ns/iter (± 150
)1.00
es2016_exponentiation
89470
ns/iter (± 701
)90448
ns/iter (± 279
)0.99
es2015_arrow
93142
ns/iter (± 445
)93830
ns/iter (± 277
)0.99
es2015_block_scoped_fn
91023
ns/iter (± 516
)91716
ns/iter (± 768
)0.99
es2015_block_scoping
169496
ns/iter (± 669
)166759
ns/iter (± 233
)1.02
This comment was automatically generated by workflow using github-action-benchmark.