Skip to content

Commit

Permalink
fix(es/minifier): Don't drop unused properties of top-level vars (#7638)
Browse files Browse the repository at this point in the history
**Related issue:**

 - Closes #7635.
  • Loading branch information
kdy1 committed Jul 7, 2023
1 parent e80c695 commit 19ba714
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 1 deletion.
4 changes: 4 additions & 0 deletions crates/swc_ecma_minifier/src/compress/optimize/unused.rs
Original file line number Diff line number Diff line change
Expand Up @@ -835,6 +835,10 @@ impl Optimizer<'_> {
return None;
}

if self.ctx.top_level && !self.options.top_level() {
return None;
}

let name = v.name.as_ident()?;
let obj = v.init.as_mut()?.as_mut_object()?;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { s as style, m } from "../index.f66dda46.js";
const process = {
browser: !0,
env: {
FOO: "bar",
OVERRIDE: "11",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { s as style, y, m } from "../index.f66dda46.js";
const styles = {};
const styles = {
about: "about_migxty"
};
function About({ query, title }) {
return y(()=>(console.log("Mounted About: ", title), ()=>{
console.log("Unmounting About: ", title);
Expand Down

1 comment on commit 19ba714

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: 19ba714 Previous: 7e9e84e Ratio
es/full/bugs-1 284103 ns/iter (± 5039) 291088 ns/iter (± 6642) 0.98
es/full/minify/libraries/antd 1325882332 ns/iter (± 13003837) 1291480308 ns/iter (± 12216883) 1.03
es/full/minify/libraries/d3 277715193 ns/iter (± 2573565) 274733188 ns/iter (± 1911916) 1.01
es/full/minify/libraries/echarts 1082790323 ns/iter (± 6208103) 1047707932 ns/iter (± 4519862) 1.03
es/full/minify/libraries/jquery 84518119 ns/iter (± 193690) 84608620 ns/iter (± 70924) 1.00
es/full/minify/libraries/lodash 98652344 ns/iter (± 227995) 98360575 ns/iter (± 454268) 1.00
es/full/minify/libraries/moment 49906307 ns/iter (± 112389) 49746207 ns/iter (± 97308) 1.00
es/full/minify/libraries/react 17981300 ns/iter (± 45637) 17953739 ns/iter (± 31048) 1.00
es/full/minify/libraries/terser 219644344 ns/iter (± 1035503) 217869642 ns/iter (± 919094) 1.01
es/full/minify/libraries/three 383442273 ns/iter (± 2250969) 380918654 ns/iter (± 1855777) 1.01
es/full/minify/libraries/typescript 2690046373 ns/iter (± 17613834) 2644054729 ns/iter (± 11410549) 1.02
es/full/minify/libraries/victory 561821789 ns/iter (± 3214176) 562899835 ns/iter (± 5647728) 1.00
es/full/minify/libraries/vue 121142601 ns/iter (± 596342) 119312266 ns/iter (± 259462) 1.02
es/full/codegen/es3 34611 ns/iter (± 155) 34786 ns/iter (± 102) 0.99
es/full/codegen/es5 34490 ns/iter (± 94) 34765 ns/iter (± 64) 0.99
es/full/codegen/es2015 34558 ns/iter (± 99) 34849 ns/iter (± 63) 0.99
es/full/codegen/es2016 34530 ns/iter (± 68) 34760 ns/iter (± 80) 0.99
es/full/codegen/es2017 34528 ns/iter (± 119) 34764 ns/iter (± 100) 0.99
es/full/codegen/es2018 34480 ns/iter (± 99) 34781 ns/iter (± 58) 0.99
es/full/codegen/es2019 34588 ns/iter (± 77) 34725 ns/iter (± 91) 1.00
es/full/codegen/es2020 34480 ns/iter (± 90) 34735 ns/iter (± 79) 0.99
es/full/all/es3 171860123 ns/iter (± 1198567) 172480445 ns/iter (± 1910701) 1.00
es/full/all/es5 163642772 ns/iter (± 578245) 164937538 ns/iter (± 1798930) 0.99
es/full/all/es2015 122833654 ns/iter (± 801031) 124544643 ns/iter (± 573515) 0.99
es/full/all/es2016 122418285 ns/iter (± 412334) 124118115 ns/iter (± 663744) 0.99
es/full/all/es2017 120741763 ns/iter (± 875739) 123817613 ns/iter (± 600515) 0.98
es/full/all/es2018 119972651 ns/iter (± 716064) 121294506 ns/iter (± 983417) 0.99
es/full/all/es2019 118495474 ns/iter (± 651588) 121000111 ns/iter (± 282459) 0.98
es/full/all/es2020 114215061 ns/iter (± 440875) 116105550 ns/iter (± 526039) 0.98
es/full/parser 534809 ns/iter (± 5766) 533676 ns/iter (± 6729) 1.00
es/full/base/fixer 18903 ns/iter (± 147) 18266 ns/iter (± 215) 1.03
es/full/base/resolver_and_hygiene 79520 ns/iter (± 175) 80140 ns/iter (± 181) 0.99
serialization of serde 308 ns/iter (± 0) 307 ns/iter (± 0) 1.00
css/minify/libraries/bootstrap 28409960 ns/iter (± 65541) 28813210 ns/iter (± 53559) 0.99
css/visitor/compare/clone 1633984 ns/iter (± 9916) 1640944 ns/iter (± 4284) 1.00
css/visitor/compare/visit_mut_span 1754083 ns/iter (± 4099) 1756850 ns/iter (± 2093) 1.00
css/visitor/compare/visit_mut_span_panic 1836746 ns/iter (± 6415) 1839062 ns/iter (± 4580) 1.00
css/visitor/compare/fold_span 2570214 ns/iter (± 6436) 2587174 ns/iter (± 12336) 0.99
css/visitor/compare/fold_span_panic 2759716 ns/iter (± 16575) 2765398 ns/iter (± 11573) 1.00
css/lexer/bootstrap_5_1_3 4416649 ns/iter (± 32661) 4470384 ns/iter (± 2545) 0.99
css/lexer/foundation_6_7_4 3740727 ns/iter (± 5217) 3778295 ns/iter (± 857) 0.99
css/lexer/tailwind_3_1_1 710022 ns/iter (± 390) 722730 ns/iter (± 267) 0.98
css/parser/bootstrap_5_1_3 19751414 ns/iter (± 69651) 19224777 ns/iter (± 29638) 1.03
css/parser/foundation_6_7_4 15752410 ns/iter (± 37963) 15360473 ns/iter (± 22456) 1.03
css/parser/tailwind_3_1_1 3002214 ns/iter (± 6174) 3011500 ns/iter (± 4055) 1.00
es/codegen/colors 735808 ns/iter (± 402252) 735966 ns/iter (± 402339) 1.00
es/codegen/large 3152898 ns/iter (± 1677144) 3155009 ns/iter (± 1670534) 1.00
es/codegen/with-parser/colors 44299 ns/iter (± 638) 43861 ns/iter (± 123) 1.01
es/codegen/with-parser/large 482700 ns/iter (± 1910) 481809 ns/iter (± 1095) 1.00
es/minify/libraries/antd 1152644614 ns/iter (± 6883997) 1127300986 ns/iter (± 10944970) 1.02
es/minify/libraries/d3 242789199 ns/iter (± 972114) 238838855 ns/iter (± 316385) 1.02
es/minify/libraries/echarts 921334564 ns/iter (± 9191529) 887767075 ns/iter (± 4474176) 1.04
es/minify/libraries/jquery 74065279 ns/iter (± 78319) 73556130 ns/iter (± 86724) 1.01
es/minify/libraries/lodash 88667624 ns/iter (± 154870) 88105591 ns/iter (± 177888) 1.01
es/minify/libraries/moment 43723898 ns/iter (± 52190) 43370305 ns/iter (± 64513) 1.01
es/minify/libraries/react 16062229 ns/iter (± 18421) 15985986 ns/iter (± 59923) 1.00
es/minify/libraries/terser 187821423 ns/iter (± 904733) 186008998 ns/iter (± 451814) 1.01
es/minify/libraries/three 324771504 ns/iter (± 2280139) 317937995 ns/iter (± 644493) 1.02
es/minify/libraries/typescript 2296574098 ns/iter (± 10580124) 2247479580 ns/iter (± 7080362) 1.02
es/minify/libraries/victory 482510206 ns/iter (± 3598566) 465991889 ns/iter (± 912419) 1.04
es/minify/libraries/vue 107612159 ns/iter (± 238056) 106309768 ns/iter (± 197880) 1.01
es/visitor/compare/clone 1949766 ns/iter (± 4741) 1944695 ns/iter (± 5698) 1.00
es/visitor/compare/visit_mut_span 2292251 ns/iter (± 6869) 2282335 ns/iter (± 4674) 1.00
es/visitor/compare/visit_mut_span_panic 2323437 ns/iter (± 4150) 2315540 ns/iter (± 9183) 1.00
es/visitor/compare/fold_span 3375716 ns/iter (± 6735) 3333587 ns/iter (± 8989) 1.01
es/visitor/compare/fold_span_panic 3513790 ns/iter (± 6668) 3485203 ns/iter (± 4986) 1.01
es/lexer/colors 12946 ns/iter (± 14) 12343 ns/iter (± 36) 1.05
es/lexer/angular 6166301 ns/iter (± 4182) 6014799 ns/iter (± 25290) 1.03
es/lexer/backbone 797861 ns/iter (± 1567) 786467 ns/iter (± 408) 1.01
es/lexer/jquery 4497938 ns/iter (± 4557) 4435308 ns/iter (± 4501) 1.01
es/lexer/jquery mobile 6927677 ns/iter (± 8505) 6746641 ns/iter (± 16083) 1.03
es/lexer/mootools 3578582 ns/iter (± 4273) 3512685 ns/iter (± 3169) 1.02
es/lexer/underscore 666141 ns/iter (± 770) 650321 ns/iter (± 691) 1.02
es/lexer/three 21330761 ns/iter (± 11363) 20687798 ns/iter (± 17097) 1.03
es/lexer/yui 3866756 ns/iter (± 2836) 3794114 ns/iter (± 23957) 1.02
es/parser/colors 26327 ns/iter (± 65) 26451 ns/iter (± 74) 1.00
es/parser/angular 13281198 ns/iter (± 67641) 13226236 ns/iter (± 51376) 1.00
es/parser/backbone 1973381 ns/iter (± 9214) 1971709 ns/iter (± 6616) 1.00
es/parser/jquery 10724325 ns/iter (± 53056) 10721610 ns/iter (± 32102) 1.00
es/parser/jquery mobile 16483583 ns/iter (± 96880) 16467261 ns/iter (± 30253) 1.00
es/parser/mootools 8252200 ns/iter (± 15382) 8266593 ns/iter (± 27022) 1.00
es/parser/underscore 1690374 ns/iter (± 8657) 1693495 ns/iter (± 8178) 1.00
es/parser/three 46260399 ns/iter (± 835294) 45745139 ns/iter (± 167663) 1.01
es/parser/yui 8152159 ns/iter (± 24428) 8218143 ns/iter (± 27603) 0.99
es/preset-env/usage/builtin_type 137790 ns/iter (± 31848) 138520 ns/iter (± 32320) 0.99
es/preset-env/usage/property 17048 ns/iter (± 58) 16118 ns/iter (± 55) 1.06
es/resolver/typescript 88342388 ns/iter (± 1317938) 86860912 ns/iter (± 1031630) 1.02
es/fixer/typescript 64462290 ns/iter (± 1231440) 63285375 ns/iter (± 401229) 1.02
es/hygiene/typescript 130774877 ns/iter (± 1001081) 129709409 ns/iter (± 557951) 1.01
es/resolver_with_hygiene/typescript 241057594 ns/iter (± 1001106) 239377964 ns/iter (± 838304) 1.01
es/visitor/base-perf/module_clone 59554 ns/iter (± 204) 59867 ns/iter (± 240) 0.99
es/visitor/base-perf/fold_empty 63854 ns/iter (± 234) 64088 ns/iter (± 823) 1.00
es/visitor/base-perf/fold_noop_impl_all 63964 ns/iter (± 269) 64056 ns/iter (± 548) 1.00
es/visitor/base-perf/fold_noop_impl_vec 63584 ns/iter (± 203) 63687 ns/iter (± 486) 1.00
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 57 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 40 ns/iter (± 0) 40 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 108 ns/iter (± 0) 107 ns/iter (± 0) 1.01
es/visitor/base-perf/boxing_unboxed 78 ns/iter (± 0) 75 ns/iter (± 0) 1.04
es/visitor/base-perf/visit_empty 0 ns/iter (± 0) 0 ns/iter (± 0) NaN
es/visitor/base-perf/visit_contains_this 2582 ns/iter (± 17) 2593 ns/iter (± 9) 1.00
es/base/parallel/resolver/typescript 3957009740 ns/iter (± 319775054) 3755065143 ns/iter (± 220286210) 1.05
es/base/parallel/hygiene/typescript 1452117457 ns/iter (± 7628308) 1434663678 ns/iter (± 20216981) 1.01
misc/visitors/time-complexity/time 5 145 ns/iter (± 1) 148 ns/iter (± 3) 0.98
misc/visitors/time-complexity/time 10 412 ns/iter (± 7) 454 ns/iter (± 15) 0.91
misc/visitors/time-complexity/time 15 885 ns/iter (± 9) 885 ns/iter (± 34) 1
misc/visitors/time-complexity/time 20 1325 ns/iter (± 58) 1315 ns/iter (± 1) 1.01
misc/visitors/time-complexity/time 40 4367 ns/iter (± 10) 4355 ns/iter (± 5) 1.00
misc/visitors/time-complexity/time 60 10647 ns/iter (± 6) 9050 ns/iter (± 7) 1.18
es/full-target/es2016 239722 ns/iter (± 638) 239813 ns/iter (± 621) 1.00
es/full-target/es2017 222174 ns/iter (± 1468) 227319 ns/iter (± 816) 0.98
es/full-target/es2018 208647 ns/iter (± 503) 215242 ns/iter (± 509) 0.97
es2020_nullish_coalescing 68334 ns/iter (± 477) 70665 ns/iter (± 293) 0.97
es2020_optional_chaining 76576 ns/iter (± 287) 79053 ns/iter (± 246) 0.97
es2022_class_properties 115790 ns/iter (± 173) 119738 ns/iter (± 462) 0.97
es2018_object_rest_spread 73153 ns/iter (± 362) 74695 ns/iter (± 166) 0.98
es2019_optional_catch_binding 62831 ns/iter (± 133) 64446 ns/iter (± 236) 0.97
es2017_async_to_generator 64597 ns/iter (± 201) 65432 ns/iter (± 184) 0.99
es2016_exponentiation 68111 ns/iter (± 211) 69177 ns/iter (± 164) 0.98
es2015_arrow 70203 ns/iter (± 281) 71446 ns/iter (± 232) 0.98
es2015_block_scoped_fn 67079 ns/iter (± 1139) 69187 ns/iter (± 244) 0.97
es2015_block_scoping 120431 ns/iter (± 652) 123503 ns/iter (± 613) 0.98

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.