-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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): Do not drop properties used via
this
(#7785)
**Related issue:** - Closes #7783.
- Loading branch information
Showing
7 changed files
with
149 additions
and
1 deletion.
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,71 @@ | ||
{ | ||
"jsc": { | ||
"parser": { | ||
"syntax": "ecmascript", | ||
"jsx": true | ||
}, | ||
"target": "es2015", | ||
"loose": false, | ||
"minify": { | ||
"compress": { | ||
"arguments": false, | ||
"arrows": true, | ||
"booleans": true, | ||
"booleans_as_integers": false, | ||
"collapse_vars": true, | ||
"comparisons": true, | ||
"computed_props": true, | ||
"conditionals": true, | ||
"dead_code": true, | ||
"directives": true, | ||
"drop_console": false, | ||
"drop_debugger": true, | ||
"evaluate": true, | ||
"expression": false, | ||
"hoist_funs": false, | ||
"hoist_props": true, | ||
"hoist_vars": false, | ||
"if_return": true, | ||
"join_vars": true, | ||
"keep_classnames": false, | ||
"keep_fargs": true, | ||
"keep_fnames": false, | ||
"keep_infinity": false, | ||
"loops": true, | ||
"negate_iife": true, | ||
"properties": true, | ||
"reduce_funcs": false, | ||
"reduce_vars": false, | ||
"side_effects": true, | ||
"switches": true, | ||
"typeofs": true, | ||
"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": true, | ||
"const_to_let": true, | ||
"pristine_globals": true | ||
}, | ||
"mangle": { | ||
"toplevel": false, | ||
"keep_classnames": false, | ||
"keep_fnames": false, | ||
"keep_private_props": false, | ||
"ie8": false, | ||
"safari10": false | ||
} | ||
} | ||
}, | ||
"module": { | ||
"type": "es6" | ||
}, | ||
"minify": true, | ||
"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,14 @@ | ||
export default function Home() { | ||
return ( | ||
<div>{foo.a}</div> | ||
) | ||
} | ||
|
||
const foo = { | ||
get a() { | ||
return `a ${this.b}`; | ||
}, | ||
get b() { | ||
return `b`; | ||
} | ||
} |
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 @@ | ||
export default function e(){return React.createElement("div",null,foo.a)}let foo={get a(){return`a ${this.b}`},get b(){return"b"}}; |
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
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
11 changes: 11 additions & 0 deletions
11
crates/swc_ecma_minifier/tests/fixture/issues/7783/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,11 @@ | ||
export default function Home() { | ||
return React.createElement("div", null, foo.a); | ||
} | ||
const foo = { | ||
get a() { | ||
return `a ${this.b}`; | ||
}, | ||
get b() { | ||
return `b`; | ||
} | ||
}; |
11 changes: 11 additions & 0 deletions
11
crates/swc_ecma_minifier/tests/fixture/issues/7783/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,11 @@ | ||
export default function Home() { | ||
return React.createElement("div", null, foo.a); | ||
} | ||
const foo = { | ||
get a () { | ||
return `a ${this.b}`; | ||
}, | ||
get b () { | ||
return "b"; | ||
} | ||
}; |
552d9aa
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
291272
ns/iter (± 4464
)294983
ns/iter (± 10736
)0.99
es/full/minify/libraries/antd
1314983115
ns/iter (± 8464378
)1393451284
ns/iter (± 12355364
)0.94
es/full/minify/libraries/d3
280107813
ns/iter (± 2503141
)294944366
ns/iter (± 7342342
)0.95
es/full/minify/libraries/echarts
1052310968
ns/iter (± 13384943
)1106663308
ns/iter (± 24141764
)0.95
es/full/minify/libraries/jquery
85123447
ns/iter (± 119507
)85503274
ns/iter (± 716073
)1.00
es/full/minify/libraries/lodash
98535771
ns/iter (± 231091
)100659215
ns/iter (± 918345
)0.98
es/full/minify/libraries/moment
50104968
ns/iter (± 55255
)50414762
ns/iter (± 537849
)0.99
es/full/minify/libraries/react
18055265
ns/iter (± 33558
)18172136
ns/iter (± 122945
)0.99
es/full/minify/libraries/terser
219747790
ns/iter (± 606503
)229593321
ns/iter (± 5006638
)0.96
es/full/minify/libraries/three
385373353
ns/iter (± 1823612
)408699446
ns/iter (± 9219747
)0.94
es/full/minify/libraries/typescript
2672584838
ns/iter (± 6067121
)2747289997
ns/iter (± 21911913
)0.97
es/full/minify/libraries/victory
566346710
ns/iter (± 3034159
)590590452
ns/iter (± 13457291
)0.96
es/full/minify/libraries/vue
120010701
ns/iter (± 268621
)123570004
ns/iter (± 779407
)0.97
es/full/codegen/es3
33508
ns/iter (± 101
)34070
ns/iter (± 59
)0.98
es/full/codegen/es5
33437
ns/iter (± 133
)34039
ns/iter (± 51
)0.98
es/full/codegen/es2015
33583
ns/iter (± 80
)33970
ns/iter (± 108
)0.99
es/full/codegen/es2016
33639
ns/iter (± 86
)33982
ns/iter (± 75
)0.99
es/full/codegen/es2017
33480
ns/iter (± 174
)34028
ns/iter (± 88
)0.98
es/full/codegen/es2018
33579
ns/iter (± 115
)34018
ns/iter (± 106
)0.99
es/full/codegen/es2019
33557
ns/iter (± 114
)34051
ns/iter (± 80
)0.99
es/full/codegen/es2020
33657
ns/iter (± 105
)34087
ns/iter (± 77
)0.99
es/full/all/es3
173524514
ns/iter (± 667633
)171898682
ns/iter (± 607742
)1.01
es/full/all/es5
165788081
ns/iter (± 1321109
)164384543
ns/iter (± 1577156
)1.01
es/full/all/es2015
125089653
ns/iter (± 657250
)123491325
ns/iter (± 447676
)1.01
es/full/all/es2016
124719635
ns/iter (± 784361
)122848446
ns/iter (± 1287123
)1.02
es/full/all/es2017
123607291
ns/iter (± 1283621
)122586959
ns/iter (± 728454
)1.01
es/full/all/es2018
121186685
ns/iter (± 914225
)120143891
ns/iter (± 651318
)1.01
es/full/all/es2019
121073662
ns/iter (± 732299
)119627782
ns/iter (± 1547531
)1.01
es/full/all/es2020
116064653
ns/iter (± 840430
)115429026
ns/iter (± 451329
)1.01
es/full/parser
541613
ns/iter (± 6299
)536594
ns/iter (± 5615
)1.01
es/full/base/fixer
17624
ns/iter (± 53
)18715
ns/iter (± 1036
)0.94
es/full/base/resolver_and_hygiene
78980
ns/iter (± 266
)80956
ns/iter (± 357
)0.98
serialization of serde
290
ns/iter (± 0
)293
ns/iter (± 4
)0.99
css/minify/libraries/bootstrap
28778903
ns/iter (± 83995
)29355574
ns/iter (± 77669
)0.98
css/visitor/compare/clone
1638327
ns/iter (± 3168
)1635441
ns/iter (± 2344
)1.00
css/visitor/compare/visit_mut_span
1764912
ns/iter (± 2148
)1758759
ns/iter (± 1752
)1.00
css/visitor/compare/visit_mut_span_panic
1838390
ns/iter (± 3045
)1850422
ns/iter (± 5631
)0.99
css/visitor/compare/fold_span
2581123
ns/iter (± 17048
)2591087
ns/iter (± 12405
)1.00
css/visitor/compare/fold_span_panic
2763355
ns/iter (± 13929
)2761411
ns/iter (± 10650
)1.00
css/lexer/bootstrap_5_1_3
4467055
ns/iter (± 5674
)4458079
ns/iter (± 4684
)1.00
css/lexer/foundation_6_7_4
3769657
ns/iter (± 2868
)3756489
ns/iter (± 1995
)1.00
css/lexer/tailwind_3_1_1
717062
ns/iter (± 254
)713534
ns/iter (± 532
)1.00
css/parser/bootstrap_5_1_3
19277858
ns/iter (± 175866
)19735381
ns/iter (± 51781
)0.98
css/parser/foundation_6_7_4
15541900
ns/iter (± 36389
)15985505
ns/iter (± 19095
)0.97
css/parser/tailwind_3_1_1
2989800
ns/iter (± 4359
)3060712
ns/iter (± 5656
)0.98
es/codegen/colors
737022
ns/iter (± 405879
)731655
ns/iter (± 395973
)1.01
es/codegen/large
2888458
ns/iter (± 1526052
)2889574
ns/iter (± 1531028
)1.00
es/codegen/with-parser/colors
45367
ns/iter (± 640
)45014
ns/iter (± 128
)1.01
es/codegen/with-parser/large
482467
ns/iter (± 1023
)484317
ns/iter (± 675
)1.00
es/minify/libraries/antd
1146685163
ns/iter (± 10408689
)1153314101
ns/iter (± 9359004
)0.99
es/minify/libraries/d3
241309235
ns/iter (± 530877
)242730983
ns/iter (± 575532
)0.99
es/minify/libraries/echarts
900420376
ns/iter (± 2770669
)906891977
ns/iter (± 2527853
)0.99
es/minify/libraries/jquery
74360904
ns/iter (± 104421
)74745881
ns/iter (± 132608
)0.99
es/minify/libraries/lodash
88441932
ns/iter (± 149972
)88935000
ns/iter (± 294006
)0.99
es/minify/libraries/moment
44097272
ns/iter (± 29822
)44254677
ns/iter (± 42933
)1.00
es/minify/libraries/react
16124293
ns/iter (± 77965
)16164488
ns/iter (± 35719
)1.00
es/minify/libraries/terser
188804560
ns/iter (± 273823
)190080754
ns/iter (± 390454
)0.99
es/minify/libraries/three
321973123
ns/iter (± 511576
)322999123
ns/iter (± 506817
)1.00
es/minify/libraries/typescript
2268351276
ns/iter (± 6210532
)2277740778
ns/iter (± 8549469
)1.00
es/minify/libraries/victory
480717211
ns/iter (± 2295246
)480413938
ns/iter (± 1843816
)1.00
es/minify/libraries/vue
107095727
ns/iter (± 124832
)108209962
ns/iter (± 95334
)0.99
es/visitor/compare/clone
1948787
ns/iter (± 7151
)1947301
ns/iter (± 4848
)1.00
es/visitor/compare/visit_mut_span
2298921
ns/iter (± 6579
)2294285
ns/iter (± 4182
)1.00
es/visitor/compare/visit_mut_span_panic
2319548
ns/iter (± 4964
)2324281
ns/iter (± 5195
)1.00
es/visitor/compare/fold_span
3355158
ns/iter (± 9283
)3352974
ns/iter (± 6416
)1.00
es/visitor/compare/fold_span_panic
3479409
ns/iter (± 9075
)3472470
ns/iter (± 6210
)1.00
es/lexer/colors
13026
ns/iter (± 71
)13173
ns/iter (± 49
)0.99
es/lexer/angular
6127162
ns/iter (± 5173
)6141500
ns/iter (± 6791
)1.00
es/lexer/backbone
788527
ns/iter (± 680
)803811
ns/iter (± 1508
)0.98
es/lexer/jquery
4420627
ns/iter (± 121400
)4545671
ns/iter (± 2193
)0.97
es/lexer/jquery mobile
6750819
ns/iter (± 13640
)6949075
ns/iter (± 3419
)0.97
es/lexer/mootools
3494384
ns/iter (± 4646
)3606903
ns/iter (± 2577
)0.97
es/lexer/underscore
657322
ns/iter (± 509
)684498
ns/iter (± 812
)0.96
es/lexer/three
20971776
ns/iter (± 57305
)21557565
ns/iter (± 90565
)0.97
es/lexer/yui
3779878
ns/iter (± 25139
)3880218
ns/iter (± 4263
)0.97
es/parser/colors
27846
ns/iter (± 67
)27754
ns/iter (± 32
)1.00
es/parser/angular
13685900
ns/iter (± 82460
)13587234
ns/iter (± 67998
)1.01
es/parser/backbone
2033067
ns/iter (± 5565
)2003605
ns/iter (± 9224
)1.01
es/parser/jquery
11124101
ns/iter (± 46852
)10983409
ns/iter (± 50318
)1.01
es/parser/jquery mobile
16949227
ns/iter (± 40758
)16870868
ns/iter (± 152349
)1.00
es/parser/mootools
8550221
ns/iter (± 17908
)8438775
ns/iter (± 16159
)1.01
es/parser/underscore
1755779
ns/iter (± 11259
)1730043
ns/iter (± 8135
)1.01
es/parser/three
47414874
ns/iter (± 201517
)46910176
ns/iter (± 182108
)1.01
es/parser/yui
8457511
ns/iter (± 24921
)8350564
ns/iter (± 26998
)1.01
es/preset-env/usage/builtin_type
139041
ns/iter (± 32442
)138109
ns/iter (± 31782
)1.01
es/preset-env/usage/property
16927
ns/iter (± 56
)16959
ns/iter (± 121
)1.00
es/resolver/typescript
88399126
ns/iter (± 848618
)87530002
ns/iter (± 1201609
)1.01
es/fixer/typescript
63527362
ns/iter (± 506753
)61935767
ns/iter (± 375114
)1.03
es/hygiene/typescript
128919492
ns/iter (± 395514
)129637016
ns/iter (± 858790
)0.99
es/resolver_with_hygiene/typescript
239443564
ns/iter (± 1177961
)239371918
ns/iter (± 1210757
)1.00
es/visitor/base-perf/module_clone
59579
ns/iter (± 215
)58697
ns/iter (± 105
)1.02
es/visitor/base-perf/fold_empty
63465
ns/iter (± 244
)62015
ns/iter (± 388
)1.02
es/visitor/base-perf/fold_noop_impl_all
63542
ns/iter (± 144
)62755
ns/iter (± 201
)1.01
es/visitor/base-perf/fold_noop_impl_vec
63326
ns/iter (± 357
)62197
ns/iter (± 310
)1.02
es/visitor/base-perf/boxing_boxed_clone
57
ns/iter (± 0
)57
ns/iter (± 0
)1
es/visitor/base-perf/boxing_unboxed_clone
38
ns/iter (± 0
)38
ns/iter (± 0
)1
es/visitor/base-perf/boxing_boxed
107
ns/iter (± 0
)106
ns/iter (± 0
)1.01
es/visitor/base-perf/boxing_unboxed
75
ns/iter (± 0
)75
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
2521
ns/iter (± 16
)2514
ns/iter (± 10
)1.00
es/base/parallel/resolver/typescript
4228665020
ns/iter (± 266107826
)3649089563
ns/iter (± 232440358
)1.16
es/base/parallel/hygiene/typescript
1446577542
ns/iter (± 12163374
)1460780479
ns/iter (± 24221190
)0.99
misc/visitors/time-complexity/time 5
137
ns/iter (± 0
)133
ns/iter (± 1
)1.03
misc/visitors/time-complexity/time 10
344
ns/iter (± 45
)259
ns/iter (± 0
)1.33
misc/visitors/time-complexity/time 15
522
ns/iter (± 2
)500
ns/iter (± 2
)1.04
misc/visitors/time-complexity/time 20
1061
ns/iter (± 2
)1090
ns/iter (± 23
)0.97
misc/visitors/time-complexity/time 40
3609
ns/iter (± 15
)3555
ns/iter (± 18
)1.02
misc/visitors/time-complexity/time 60
8861
ns/iter (± 6
)7352
ns/iter (± 96
)1.21
es/full-target/es2016
230818
ns/iter (± 1074
)229875
ns/iter (± 330
)1.00
es/full-target/es2017
218633
ns/iter (± 827
)217448
ns/iter (± 981
)1.01
es/full-target/es2018
208039
ns/iter (± 491
)204979
ns/iter (± 682
)1.01
es2020_nullish_coalescing
69889
ns/iter (± 309
)68658
ns/iter (± 565
)1.02
es2020_optional_chaining
78457
ns/iter (± 383
)79088
ns/iter (± 255
)0.99
es2022_class_properties
115982
ns/iter (± 357
)113695
ns/iter (± 420
)1.02
es2018_object_rest_spread
73462
ns/iter (± 905
)73132
ns/iter (± 351
)1.00
es2019_optional_catch_binding
63523
ns/iter (± 248
)61842
ns/iter (± 288
)1.03
es2017_async_to_generator
63720
ns/iter (± 148
)62216
ns/iter (± 265
)1.02
es2016_exponentiation
67712
ns/iter (± 255
)66595
ns/iter (± 552
)1.02
es2015_arrow
71320
ns/iter (± 185
)69565
ns/iter (± 290
)1.03
es2015_block_scoped_fn
66988
ns/iter (± 154
)66215
ns/iter (± 214
)1.01
es2015_block_scoping
120438
ns/iter (± 553
)121310
ns/iter (± 414
)0.99
This comment was automatically generated by workflow using github-action-benchmark.