File tree 7 files changed +225
-1
lines changed
swc/tests/fixture/issues-7xxx/7821
tests/fixture/issues/7821
7 files changed +225
-1
lines changed Original file line number Diff line number Diff line change
1
+ {
2
+ "jsc" : {
3
+ "parser" : {
4
+ "syntax" : " typescript" ,
5
+ "tsx" : true
6
+ },
7
+ "target" : " es5" ,
8
+ "loose" : false ,
9
+ "minify" : {
10
+ "compress" : {
11
+ "arguments" : false ,
12
+ "arrows" : true ,
13
+ "booleans" : true ,
14
+ "booleans_as_integers" : false ,
15
+ "collapse_vars" : true ,
16
+ "comparisons" : true ,
17
+ "computed_props" : true ,
18
+ "conditionals" : true ,
19
+ "dead_code" : true ,
20
+ "directives" : true ,
21
+ "drop_console" : false ,
22
+ "drop_debugger" : true ,
23
+ "evaluate" : true ,
24
+ "expression" : false ,
25
+ "hoist_funs" : false ,
26
+ "hoist_props" : true ,
27
+ "hoist_vars" : false ,
28
+ "if_return" : true ,
29
+ "join_vars" : true ,
30
+ "keep_classnames" : false ,
31
+ "keep_fargs" : true ,
32
+ "keep_fnames" : false ,
33
+ "keep_infinity" : false ,
34
+ "loops" : true ,
35
+ "negate_iife" : true ,
36
+ "properties" : true ,
37
+ "reduce_funcs" : false ,
38
+ "reduce_vars" : false ,
39
+ "side_effects" : true ,
40
+ "switches" : true ,
41
+ "typeofs" : true ,
42
+ "unsafe" : false ,
43
+ "unsafe_arrows" : false ,
44
+ "unsafe_comps" : false ,
45
+ "unsafe_Function" : false ,
46
+ "unsafe_math" : false ,
47
+ "unsafe_symbols" : false ,
48
+ "unsafe_methods" : false ,
49
+ "unsafe_proto" : false ,
50
+ "unsafe_regexp" : false ,
51
+ "unsafe_undefined" : false ,
52
+ "unused" : true ,
53
+ "const_to_let" : true ,
54
+ "pristine_globals" : true
55
+ },
56
+ "mangle" : {
57
+ "toplevel" : false ,
58
+ "keep_classnames" : false ,
59
+ "keep_fnames" : false ,
60
+ "keep_private_props" : false ,
61
+ "ie8" : false ,
62
+ "safari10" : false
63
+ }
64
+ }
65
+ },
66
+ "module" : {
67
+ "type" : " es6"
68
+ },
69
+ "minify" : false ,
70
+ "isModule" : true
71
+ }
Original file line number Diff line number Diff line change
1
+ const Blocks = {
2
+ Block1 : ( ) => {
3
+ return < > 'Block1xx'</ > ;
4
+ } ,
5
+ Block2 : ( ) => {
6
+ return < > 'Block2xx'</ > ;
7
+ } ,
8
+ Layout1 : ( ) => {
9
+ // In the final code, Blocks does not have a 'Block1' key
10
+ return RenderLayout ( Blocks , [ 'Block1' ] )
11
+ }
12
+ } ;
13
+
14
+ function RenderLayout ( Comps , items ) {
15
+ return items . map ( ( item ) => {
16
+ return Comps [ item ]
17
+ } )
18
+ }
19
+
20
+ export function render ( ) {
21
+ return < Blocks . Layout1 />
22
+ }
Original file line number Diff line number Diff line change
1
+ var Blocks = {
2
+ Block1 : function ( ) {
3
+ return React . createElement ( React . Fragment , null , "'Block1xx'" ) ;
4
+ } ,
5
+ Block2 : function ( ) {
6
+ return React . createElement ( React . Fragment , null , "'Block2xx'" ) ;
7
+ } ,
8
+ Layout1 : function ( ) {
9
+ return [
10
+ "Block1"
11
+ ] . map ( function ( e ) {
12
+ return Blocks [ e ] ;
13
+ } ) ;
14
+ }
15
+ } ;
16
+ export function render ( ) {
17
+ return React . createElement ( Blocks . Layout1 , null ) ;
18
+ }
Original file line number Diff line number Diff line change @@ -245,10 +245,35 @@ impl Optimizer<'_> {
245
245
{
246
246
self . mode . store ( id. clone ( ) , & * init) ;
247
247
248
- let usage_count = usage. usage_count ;
248
+ let VarUsageInfo {
249
+ used_as_arg,
250
+ used_as_ref,
251
+ indexed_with_dynamic_key,
252
+ usage_count,
253
+ has_property_access,
254
+ has_property_mutation,
255
+ used_above_decl,
256
+ executed_multiple_time,
257
+ used_in_cond,
258
+ used_recursively,
259
+ no_side_effect_for_member_access,
260
+ ..
261
+ } = * usage;
249
262
let mut inc_usage = || {
250
263
if let Expr :: Ident ( i) = & * init {
251
264
if let Some ( u) = self . data . vars . get_mut ( & i. to_id ( ) ) {
265
+ u. used_as_arg |= used_as_arg;
266
+ u. used_as_ref |= used_as_ref;
267
+ u. indexed_with_dynamic_key |= indexed_with_dynamic_key;
268
+ u. has_property_access |= has_property_access;
269
+ u. has_property_mutation |= has_property_mutation;
270
+ u. used_above_decl |= used_above_decl;
271
+ u. executed_multiple_time |= executed_multiple_time;
272
+ u. used_in_cond |= used_in_cond;
273
+ u. used_recursively |= used_recursively;
274
+
275
+ u. no_side_effect_for_member_access &= no_side_effect_for_member_access;
276
+
252
277
u. ref_count += ref_count;
253
278
u. usage_count += usage_count;
254
279
}
Original file line number Diff line number Diff line change
1
+ {
2
+ "arguments" : false ,
3
+ "arrows" : true ,
4
+ "booleans" : true ,
5
+ "booleans_as_integers" : false ,
6
+ "collapse_vars" : true ,
7
+ "comparisons" : true ,
8
+ "computed_props" : true ,
9
+ "conditionals" : true ,
10
+ "dead_code" : true ,
11
+ "directives" : true ,
12
+ "drop_console" : false ,
13
+ "drop_debugger" : true ,
14
+ "evaluate" : true ,
15
+ "expression" : false ,
16
+ "hoist_funs" : false ,
17
+ "hoist_props" : true ,
18
+ "hoist_vars" : false ,
19
+ "if_return" : true ,
20
+ "join_vars" : true ,
21
+ "keep_classnames" : false ,
22
+ "keep_fargs" : true ,
23
+ "keep_fnames" : false ,
24
+ "keep_infinity" : false ,
25
+ "loops" : true ,
26
+ "negate_iife" : true ,
27
+ "properties" : true ,
28
+ "reduce_funcs" : false ,
29
+ "reduce_vars" : false ,
30
+ "side_effects" : true ,
31
+ "switches" : true ,
32
+ "typeofs" : true ,
33
+ "unsafe" : false ,
34
+ "unsafe_arrows" : false ,
35
+ "unsafe_comps" : false ,
36
+ "unsafe_Function" : false ,
37
+ "unsafe_math" : false ,
38
+ "unsafe_symbols" : false ,
39
+ "unsafe_methods" : false ,
40
+ "unsafe_proto" : false ,
41
+ "unsafe_regexp" : false ,
42
+ "unsafe_undefined" : false ,
43
+ "unused" : true ,
44
+ "const_to_let" : true ,
45
+ "pristine_globals" : true
46
+ }
Original file line number Diff line number Diff line change
1
+ var Blocks = {
2
+ Block1 : function ( ) {
3
+ return React . createElement ( React . Fragment , null , "'Block1xx'" ) ;
4
+ } ,
5
+ Block2 : function ( ) {
6
+ return React . createElement ( React . Fragment , null , "'Block2xx'" ) ;
7
+ } ,
8
+ Layout1 : function ( ) {
9
+ return RenderLayout ( Blocks , [
10
+ "Block1"
11
+ ] ) ;
12
+ }
13
+ } ;
14
+ function RenderLayout ( Comps , items ) {
15
+ return items . map ( function ( item ) {
16
+ return Comps [ item ] ;
17
+ } ) ;
18
+ }
19
+ export function render ( ) {
20
+ return React . createElement ( Blocks . Layout1 , null ) ;
21
+ }
Original file line number Diff line number Diff line change
1
+ var Blocks = {
2
+ Block1 : function ( ) {
3
+ return React . createElement ( React . Fragment , null , "'Block1xx'" ) ;
4
+ } ,
5
+ Block2 : function ( ) {
6
+ return React . createElement ( React . Fragment , null , "'Block2xx'" ) ;
7
+ } ,
8
+ Layout1 : function ( ) {
9
+ return RenderLayout ( Blocks , [
10
+ "Block1"
11
+ ] ) ;
12
+ }
13
+ } ;
14
+ function RenderLayout ( Comps , items ) {
15
+ return items . map ( function ( item ) {
16
+ return Comps [ item ] ;
17
+ } ) ;
18
+ }
19
+ export function render ( ) {
20
+ return React . createElement ( Blocks . Layout1 , null ) ;
21
+ }
You can’t perform that action at this time.
1 commit comments
github-actions[bot] commentedon Aug 17, 2023
Benchmark
es/full/bugs-1
288888
ns/iter (± 7371
)293738
ns/iter (± 14685
)0.98
es/full/minify/libraries/antd
1440777976
ns/iter (± 19501405
)1296700916
ns/iter (± 12577669
)1.11
es/full/minify/libraries/d3
301814182
ns/iter (± 3559360
)271041513
ns/iter (± 2465526
)1.11
es/full/minify/libraries/echarts
1151736906
ns/iter (± 12888717
)1038827232
ns/iter (± 4025243
)1.11
es/full/minify/libraries/jquery
86602713
ns/iter (± 365685
)83020024
ns/iter (± 274875
)1.04
es/full/minify/libraries/lodash
100690191
ns/iter (± 589648
)95973533
ns/iter (± 274387
)1.05
es/full/minify/libraries/moment
50850294
ns/iter (± 297064
)49128718
ns/iter (± 45639
)1.04
es/full/minify/libraries/react
18378926
ns/iter (± 178817
)17834193
ns/iter (± 80975
)1.03
es/full/minify/libraries/terser
233873080
ns/iter (± 1439189
)217504520
ns/iter (± 2207134
)1.08
es/full/minify/libraries/three
418759004
ns/iter (± 5231659
)379141097
ns/iter (± 1079641
)1.10
es/full/minify/libraries/typescript
2802884599
ns/iter (± 13575477
)2639666147
ns/iter (± 17164587
)1.06
es/full/minify/libraries/victory
616626693
ns/iter (± 4623576
)556521307
ns/iter (± 2830884
)1.11
es/full/minify/libraries/vue
123099563
ns/iter (± 1005388
)117812164
ns/iter (± 474991
)1.04
es/full/codegen/es3
33825
ns/iter (± 173
)36267
ns/iter (± 75
)0.93
es/full/codegen/es5
33719
ns/iter (± 104
)36271
ns/iter (± 83
)0.93
es/full/codegen/es2015
33810
ns/iter (± 100
)36434
ns/iter (± 63
)0.93
es/full/codegen/es2016
33815
ns/iter (± 91
)36277
ns/iter (± 139
)0.93
es/full/codegen/es2017
33767
ns/iter (± 96
)36379
ns/iter (± 117
)0.93
es/full/codegen/es2018
33753
ns/iter (± 43
)36273
ns/iter (± 71
)0.93
es/full/codegen/es2019
33884
ns/iter (± 129
)36334
ns/iter (± 107
)0.93
es/full/codegen/es2020
33797
ns/iter (± 87
)36282
ns/iter (± 93
)0.93
es/full/all/es3
170024181
ns/iter (± 1117642
)167678535
ns/iter (± 1286363
)1.01
es/full/all/es5
163486679
ns/iter (± 979386
)160114035
ns/iter (± 817207
)1.02
es/full/all/es2015
122546691
ns/iter (± 657678
)119058934
ns/iter (± 924795
)1.03
es/full/all/es2016
121098965
ns/iter (± 635981
)117783746
ns/iter (± 912457
)1.03
es/full/all/es2017
120747714
ns/iter (± 471863
)117014298
ns/iter (± 502499
)1.03
es/full/all/es2018
119056899
ns/iter (± 1050751
)115318664
ns/iter (± 492105
)1.03
es/full/all/es2019
118879300
ns/iter (± 402132
)114394922
ns/iter (± 599357
)1.04
es/full/all/es2020
113624171
ns/iter (± 857443
)110069756
ns/iter (± 532523
)1.03
es/full/parser
503201
ns/iter (± 7490
)505907
ns/iter (± 4463
)0.99
es/full/base/fixer
18158
ns/iter (± 181
)18360
ns/iter (± 117
)0.99
es/full/base/resolver_and_hygiene
80687
ns/iter (± 252
)81156
ns/iter (± 257
)0.99
serialization of serde
297
ns/iter (± 1
)294
ns/iter (± 0
)1.01
css/minify/libraries/bootstrap
29530937
ns/iter (± 169509
)29488908
ns/iter (± 98890
)1.00
css/visitor/compare/clone
1651280
ns/iter (± 1500
)1642426
ns/iter (± 14112
)1.01
css/visitor/compare/visit_mut_span
1776300
ns/iter (± 5196
)1779596
ns/iter (± 8531
)1.00
css/visitor/compare/visit_mut_span_panic
1853610
ns/iter (± 5637
)1837334
ns/iter (± 8819
)1.01
css/visitor/compare/fold_span
2595885
ns/iter (± 15068
)2560154
ns/iter (± 11366
)1.01
css/visitor/compare/fold_span_panic
2762014
ns/iter (± 10982
)2758409
ns/iter (± 17666
)1.00
css/lexer/bootstrap_5_1_3
4535696
ns/iter (± 3404
)4440780
ns/iter (± 6017
)1.02
css/lexer/foundation_6_7_4
3796597
ns/iter (± 4023
)3786068
ns/iter (± 6710
)1.00
css/lexer/tailwind_3_1_1
720451
ns/iter (± 535
)726070
ns/iter (± 1079
)0.99
css/parser/bootstrap_5_1_3
19661634
ns/iter (± 137160
)19725747
ns/iter (± 41883
)1.00
css/parser/foundation_6_7_4
15652036
ns/iter (± 92666
)15289360
ns/iter (± 22158
)1.02
css/parser/tailwind_3_1_1
2989627
ns/iter (± 7757
)2999754
ns/iter (± 5925
)1.00
es/codegen/colors
728201
ns/iter (± 395807
)730116
ns/iter (± 397179
)1.00
es/codegen/large
2921836
ns/iter (± 1539750
)2912228
ns/iter (± 1533243
)1.00
es/codegen/with-parser/colors
46074
ns/iter (± 204
)45933
ns/iter (± 325
)1.00
es/codegen/with-parser/large
492115
ns/iter (± 850
)487556
ns/iter (± 2308
)1.01
es/minify/libraries/antd
1237934638
ns/iter (± 17722450
)1136488192
ns/iter (± 6888493
)1.09
es/minify/libraries/d3
259621171
ns/iter (± 4304534
)237661251
ns/iter (± 948581
)1.09
es/minify/libraries/echarts
993989081
ns/iter (± 6501112
)904774683
ns/iter (± 7064071
)1.10
es/minify/libraries/jquery
75455389
ns/iter (± 332611
)72860508
ns/iter (± 100984
)1.04
es/minify/libraries/lodash
89674894
ns/iter (± 610750
)86934528
ns/iter (± 130499
)1.03
es/minify/libraries/moment
44424354
ns/iter (± 211510
)43129045
ns/iter (± 53427
)1.03
es/minify/libraries/react
16421101
ns/iter (± 138817
)15976378
ns/iter (± 64676
)1.03
es/minify/libraries/terser
198583037
ns/iter (± 3176059
)185146959
ns/iter (± 469707
)1.07
es/minify/libraries/three
359901487
ns/iter (± 6818052
)320228381
ns/iter (± 1651591
)1.12
es/minify/libraries/typescript
2391411565
ns/iter (± 19483847
)2230754973
ns/iter (± 6933240
)1.07
es/minify/libraries/victory
529815633
ns/iter (± 6283729
)467576736
ns/iter (± 1128265
)1.13
es/minify/libraries/vue
110041105
ns/iter (± 762630
)105574571
ns/iter (± 167035
)1.04
es/visitor/compare/clone
1960817
ns/iter (± 4904
)1980886
ns/iter (± 14878
)0.99
es/visitor/compare/visit_mut_span
2272690
ns/iter (± 7675
)2291178
ns/iter (± 7604
)0.99
es/visitor/compare/visit_mut_span_panic
2345323
ns/iter (± 6120
)2345898
ns/iter (± 7118
)1.00
es/visitor/compare/fold_span
3403365
ns/iter (± 13294
)3417081
ns/iter (± 7300
)1.00
es/visitor/compare/fold_span_panic
3512131
ns/iter (± 26252
)3511772
ns/iter (± 4390
)1.00
es/lexer/colors
13299
ns/iter (± 11
)13086
ns/iter (± 146
)1.02
es/lexer/angular
6179611
ns/iter (± 12060
)6088156
ns/iter (± 36850
)1.02
es/lexer/backbone
801786
ns/iter (± 1898
)792586
ns/iter (± 493
)1.01
es/lexer/jquery
4548012
ns/iter (± 8231
)4498618
ns/iter (± 4188
)1.01
es/lexer/jquery mobile
6909346
ns/iter (± 12536
)6832736
ns/iter (± 5002
)1.01
es/lexer/mootools
3615117
ns/iter (± 3568
)3562215
ns/iter (± 2408
)1.01
es/lexer/underscore
674001
ns/iter (± 3642
)661748
ns/iter (± 634
)1.02
es/lexer/three
21843158
ns/iter (± 47808
)21306895
ns/iter (± 26404
)1.03
es/lexer/yui
3873952
ns/iter (± 10378
)3826707
ns/iter (± 1044
)1.01
es/parser/colors
27238
ns/iter (± 61
)27058
ns/iter (± 136
)1.01
es/parser/angular
13586161
ns/iter (± 80110
)13358149
ns/iter (± 56518
)1.02
es/parser/backbone
2007146
ns/iter (± 9771
)1985347
ns/iter (± 47973
)1.01
es/parser/jquery
11003278
ns/iter (± 57435
)10829431
ns/iter (± 42704
)1.02
es/parser/jquery mobile
17095188
ns/iter (± 171775
)16588943
ns/iter (± 150382
)1.03
es/parser/mootools
8408011
ns/iter (± 29679
)8314240
ns/iter (± 27141
)1.01
es/parser/underscore
1740111
ns/iter (± 9957
)1716827
ns/iter (± 8650
)1.01
es/parser/three
49417778
ns/iter (± 895291
)46336673
ns/iter (± 185872
)1.07
es/parser/yui
8302778
ns/iter (± 61532
)8192951
ns/iter (± 32279
)1.01
es/preset-env/usage/builtin_type
140923
ns/iter (± 32326
)136135
ns/iter (± 31623
)1.04
es/preset-env/usage/property
16574
ns/iter (± 85
)17608
ns/iter (± 125
)0.94
es/resolver/typescript
90632190
ns/iter (± 1930510
)88484799
ns/iter (± 1032378
)1.02
es/fixer/typescript
65090685
ns/iter (± 632300
)63247686
ns/iter (± 1307190
)1.03
es/hygiene/typescript
136302884
ns/iter (± 1575401
)129159775
ns/iter (± 473086
)1.06
es/resolver_with_hygiene/typescript
250282916
ns/iter (± 3792915
)239048431
ns/iter (± 879584
)1.05
es/visitor/base-perf/module_clone
59948
ns/iter (± 196
)60002
ns/iter (± 271
)1.00
es/visitor/base-perf/fold_empty
64065
ns/iter (± 255
)64430
ns/iter (± 305
)0.99
es/visitor/base-perf/fold_noop_impl_all
64142
ns/iter (± 282
)64073
ns/iter (± 270
)1.00
es/visitor/base-perf/fold_noop_impl_vec
64645
ns/iter (± 343
)64758
ns/iter (± 305
)1.00
es/visitor/base-perf/boxing_boxed_clone
63
ns/iter (± 0
)56
ns/iter (± 0
)1.13
es/visitor/base-perf/boxing_unboxed_clone
41
ns/iter (± 0
)40
ns/iter (± 0
)1.02
es/visitor/base-perf/boxing_boxed
109
ns/iter (± 0
)108
ns/iter (± 0
)1.01
es/visitor/base-perf/boxing_unboxed
79
ns/iter (± 0
)79
ns/iter (± 0
)1
es/visitor/base-perf/visit_empty
0
ns/iter (± 0
)0
ns/iter (± 0
)NaN
es/visitor/base-perf/visit_contains_this
2613
ns/iter (± 8
)2780
ns/iter (± 15
)0.94
es/base/parallel/resolver/typescript
4548648139
ns/iter (± 277902658
)4207289015
ns/iter (± 201312857
)1.08
es/base/parallel/hygiene/typescript
1432803095
ns/iter (± 15206152
)1457577490
ns/iter (± 17887184
)0.98
misc/visitors/time-complexity/time 5
131
ns/iter (± 1
)138
ns/iter (± 2
)0.95
misc/visitors/time-complexity/time 10
317
ns/iter (± 6
)389
ns/iter (± 2
)0.81
misc/visitors/time-complexity/time 15
726
ns/iter (± 4
)732
ns/iter (± 9
)0.99
misc/visitors/time-complexity/time 20
931
ns/iter (± 53
)1104
ns/iter (± 56
)0.84
misc/visitors/time-complexity/time 40
3511
ns/iter (± 4
)4094
ns/iter (± 14
)0.86
misc/visitors/time-complexity/time 60
7312
ns/iter (± 30
)7329
ns/iter (± 22
)1.00
es/full-target/es2016
233936
ns/iter (± 883
)237909
ns/iter (± 1014
)0.98
es/full-target/es2017
222533
ns/iter (± 689
)226763
ns/iter (± 943
)0.98
es/full-target/es2018
210688
ns/iter (± 972
)213661
ns/iter (± 821
)0.99
es2020_nullish_coalescing
72075
ns/iter (± 420
)71262
ns/iter (± 246
)1.01
es2020_optional_chaining
84958
ns/iter (± 244
)82879
ns/iter (± 218
)1.03
es2022_class_properties
114846
ns/iter (± 324
)116704
ns/iter (± 518
)0.98
es2018_object_rest_spread
77044
ns/iter (± 460
)76087
ns/iter (± 251
)1.01
es2019_optional_catch_binding
65879
ns/iter (± 236
)65037
ns/iter (± 346
)1.01
es2017_async_to_generator
63253
ns/iter (± 206
)65147
ns/iter (± 143
)0.97
es2016_exponentiation
69124
ns/iter (± 268
)68725
ns/iter (± 212
)1.01
es2015_arrow
72868
ns/iter (± 173
)72174
ns/iter (± 210
)1.01
es2015_block_scoped_fn
69405
ns/iter (± 556
)68309
ns/iter (± 142
)1.02
es2015_block_scoping
123659
ns/iter (± 579
)125877
ns/iter (± 879
)0.98
This comment was automatically generated by workflow using github-action-benchmark.