Skip to content

Commit

Permalink
fix(es/compat): Apply transforms for explicit resource management (#7881
Browse files Browse the repository at this point in the history
)

**Related issue:**

 - Closes #7879
  • Loading branch information
kdy1 committed Aug 27, 2023
1 parent 84737cd commit 3180e68
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 4 deletions.
9 changes: 8 additions & 1 deletion crates/swc/src/config/mod.rs
Expand Up @@ -57,7 +57,10 @@ use swc_ecma_transforms::{
modules::{path::NodeImportResolver, rewriter::import_rewriter},
optimization::{const_modules, json_parse, simplifier},
pass::{noop, Optional},
proposals::{decorators, export_default_from, import_assertions},
proposals::{
decorators, explicit_resource_management::explicit_resource_management,
export_default_from, import_assertions,
},
react::{self, default_pragma, default_pragma_frag},
resolver,
typescript::{self, TsEnumConfig, TsImportExportAssignConfig},
Expand Down Expand Up @@ -792,6 +795,10 @@ impl Options {
},
syntax.decorators()
),
Optional::new(
explicit_resource_management(),
syntax.explicit_resource_management()
),
// The transform strips import assertions, so it's only enabled if
// keep_import_assertions is false.
Optional::new(import_assertions(), !keep_import_assertions),
Expand Down
2 changes: 1 addition & 1 deletion crates/swc_ecma_parser/src/lib.rs
Expand Up @@ -282,7 +282,7 @@ impl Syntax {
}
}

fn using_decl(&self) -> bool {
pub fn explicit_resource_management(&self) -> bool {
match self {
Syntax::Es(EsConfig { using_decl, .. }) => *using_decl,
Syntax::Typescript(_) => true,
Expand Down
4 changes: 2 additions & 2 deletions crates/swc_ecma_parser/src/parser/stmt.rs
Expand Up @@ -816,7 +816,7 @@ impl<'a, I: Tokens> Parser<I> {
decls.push(self.parse_var_declarator(false, VarDeclKind::Var)?);
}

if !self.syntax().using_decl() {
if !self.syntax().explicit_resource_management() {
self.emit_err(span!(self, start), SyntaxError::UsingDeclNotEnabled);
}

Expand Down Expand Up @@ -1272,7 +1272,7 @@ impl<'a, I: Tokens> Parser<I> {
let start = cur_pos!(self);
let init = self.include_in_expr(false).parse_for_head_prefix()?;

let is_using_decl = self.input.syntax().using_decl()
let is_using_decl = self.input.syntax().explicit_resource_management()
&& match *init {
Expr::Ident(Ident {
sym: js_word!("using"),
Expand Down

1 comment on commit 3180e68

@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: 3180e68 Previous: 71d01ec Ratio
es/full/bugs-1 279239 ns/iter (± 9706) 283100 ns/iter (± 4525) 0.99
es/full/minify/libraries/antd 1269350199 ns/iter (± 8404439) 1283562950 ns/iter (± 12288118) 0.99
es/full/minify/libraries/d3 266403057 ns/iter (± 3844065) 268323948 ns/iter (± 2570043) 0.99
es/full/minify/libraries/echarts 1007143020 ns/iter (± 10383260) 1034660450 ns/iter (± 4672710) 0.97
es/full/minify/libraries/jquery 83081750 ns/iter (± 177381) 83090165 ns/iter (± 91600) 1.00
es/full/minify/libraries/lodash 95500966 ns/iter (± 937089) 96053201 ns/iter (± 164830) 0.99
es/full/minify/libraries/moment 48755652 ns/iter (± 486841) 49119368 ns/iter (± 72493) 0.99
es/full/minify/libraries/react 17832708 ns/iter (± 73220) 17849991 ns/iter (± 40505) 1.00
es/full/minify/libraries/terser 214076958 ns/iter (± 1551728) 214690747 ns/iter (± 701299) 1.00
es/full/minify/libraries/three 372113013 ns/iter (± 2706929) 379508320 ns/iter (± 2364906) 0.98
es/full/minify/libraries/typescript 2547881365 ns/iter (± 12126355) 2609193261 ns/iter (± 11260015) 0.98
es/full/minify/libraries/victory 556597900 ns/iter (± 8006176) 563236550 ns/iter (± 4755535) 0.99
es/full/minify/libraries/vue 117586296 ns/iter (± 698901) 117570853 ns/iter (± 176046) 1.00
es/full/codegen/es3 33351 ns/iter (± 493) 33370 ns/iter (± 1353) 1.00
es/full/codegen/es5 33134 ns/iter (± 423) 33346 ns/iter (± 69) 0.99
es/full/codegen/es2015 33142 ns/iter (± 425) 33380 ns/iter (± 152) 0.99
es/full/codegen/es2016 33195 ns/iter (± 366) 33353 ns/iter (± 152) 1.00
es/full/codegen/es2017 33366 ns/iter (± 400) 33334 ns/iter (± 141) 1.00
es/full/codegen/es2018 33061 ns/iter (± 393) 33491 ns/iter (± 133) 0.99
es/full/codegen/es2019 33174 ns/iter (± 394) 33337 ns/iter (± 136) 1.00
es/full/codegen/es2020 33176 ns/iter (± 487) 33388 ns/iter (± 136) 0.99
es/full/all/es3 165665985 ns/iter (± 1272035) 166705643 ns/iter (± 801961) 0.99
es/full/all/es5 157538508 ns/iter (± 976019) 160599782 ns/iter (± 1543199) 0.98
es/full/all/es2015 117727490 ns/iter (± 1540455) 120064227 ns/iter (± 507215) 0.98
es/full/all/es2016 116116184 ns/iter (± 1504825) 118739196 ns/iter (± 709543) 0.98
es/full/all/es2017 115383260 ns/iter (± 1127308) 117619501 ns/iter (± 875062) 0.98
es/full/all/es2018 113919698 ns/iter (± 1092483) 115931856 ns/iter (± 628044) 0.98
es/full/all/es2019 113967479 ns/iter (± 587876) 115872863 ns/iter (± 847163) 0.98
es/full/all/es2020 108806396 ns/iter (± 1455101) 110799969 ns/iter (± 541760) 0.98
es/full/parser 471958 ns/iter (± 5520) 491396 ns/iter (± 5718) 0.96
es/full/base/fixer 17050 ns/iter (± 130) 18982 ns/iter (± 471) 0.90
es/full/base/resolver_and_hygiene 78176 ns/iter (± 992) 81275 ns/iter (± 80) 0.96
serialization of serde 281 ns/iter (± 2) 291 ns/iter (± 0) 0.97
css/minify/libraries/bootstrap 27547746 ns/iter (± 360680) 28197523 ns/iter (± 45751) 0.98
css/visitor/compare/clone 1612043 ns/iter (± 16031) 1656817 ns/iter (± 7753) 0.97
css/visitor/compare/visit_mut_span 1740553 ns/iter (± 17408) 1774074 ns/iter (± 6736) 0.98
css/visitor/compare/visit_mut_span_panic 1781156 ns/iter (± 17268) 1862044 ns/iter (± 8409) 0.96
css/visitor/compare/fold_span 2498417 ns/iter (± 29757) 2591638 ns/iter (± 14388) 0.96
css/visitor/compare/fold_span_panic 2729461 ns/iter (± 27901) 2801597 ns/iter (± 9532) 0.97
css/lexer/bootstrap_5_1_3 4436277 ns/iter (± 34037) 4466184 ns/iter (± 6566) 0.99
css/lexer/foundation_6_7_4 3744934 ns/iter (± 57660) 3749716 ns/iter (± 3212) 1.00
css/lexer/tailwind_3_1_1 712308 ns/iter (± 11807) 713820 ns/iter (± 652) 1.00
css/parser/bootstrap_5_1_3 20107226 ns/iter (± 265679) 19806862 ns/iter (± 55234) 1.02
css/parser/foundation_6_7_4 16301083 ns/iter (± 220262) 15722952 ns/iter (± 38763) 1.04
css/parser/tailwind_3_1_1 3084864 ns/iter (± 37369) 3062950 ns/iter (± 5913) 1.01
es/codegen/colors 740634 ns/iter (± 395303) 737594 ns/iter (± 401919) 1.00
es/codegen/large 3045542 ns/iter (± 1610739) 3136456 ns/iter (± 1665300) 0.97
es/codegen/with-parser/colors 43870 ns/iter (± 656) 45395 ns/iter (± 595) 0.97
es/codegen/with-parser/large 465862 ns/iter (± 7632) 487974 ns/iter (± 678) 0.95
es/minify/libraries/antd 1106509562 ns/iter (± 11608711) 1136813172 ns/iter (± 15440096) 0.97
es/minify/libraries/d3 236650181 ns/iter (± 1048970) 237837095 ns/iter (± 339967) 1.00
es/minify/libraries/echarts 880164961 ns/iter (± 8058183) 893802708 ns/iter (± 2136192) 0.98
es/minify/libraries/jquery 72578864 ns/iter (± 269596) 73022430 ns/iter (± 118644) 0.99
es/minify/libraries/lodash 86046182 ns/iter (± 594228) 86620557 ns/iter (± 155519) 0.99
es/minify/libraries/moment 42580131 ns/iter (± 611535) 43325532 ns/iter (± 87923) 0.98
es/minify/libraries/react 15736387 ns/iter (± 224383) 15994751 ns/iter (± 43576) 0.98
es/minify/libraries/terser 182733357 ns/iter (± 1177290) 184827492 ns/iter (± 493545) 0.99
es/minify/libraries/three 313567065 ns/iter (± 1708900) 320231088 ns/iter (± 2602665) 0.98
es/minify/libraries/typescript 2192073256 ns/iter (± 10259651) 2226169424 ns/iter (± 13221958) 0.98
es/minify/libraries/victory 453671354 ns/iter (± 3309769) 474162595 ns/iter (± 2391797) 0.96
es/minify/libraries/vue 104348221 ns/iter (± 724794) 105801286 ns/iter (± 314041) 0.99
es/visitor/compare/clone 1897032 ns/iter (± 26406) 1963410 ns/iter (± 13417) 0.97
es/visitor/compare/visit_mut_span 2160795 ns/iter (± 31810) 2287786 ns/iter (± 8931) 0.94
es/visitor/compare/visit_mut_span_panic 2257722 ns/iter (± 26162) 2349976 ns/iter (± 3127) 0.96
es/visitor/compare/fold_span 3233771 ns/iter (± 37173) 3433495 ns/iter (± 9192) 0.94
es/visitor/compare/fold_span_panic 3397446 ns/iter (± 51500) 3512188 ns/iter (± 5354) 0.97
es/lexer/colors 12965 ns/iter (± 224) 13024 ns/iter (± 11) 1.00
es/lexer/angular 5955308 ns/iter (± 74247) 6132860 ns/iter (± 4846) 0.97
es/lexer/backbone 750341 ns/iter (± 5205) 786632 ns/iter (± 333) 0.95
es/lexer/jquery 4343593 ns/iter (± 60251) 4488217 ns/iter (± 3223) 0.97
es/lexer/jquery mobile 6640757 ns/iter (± 70517) 6831644 ns/iter (± 11269) 0.97
es/lexer/mootools 3443954 ns/iter (± 41525) 3554986 ns/iter (± 4866) 0.97
es/lexer/underscore 635340 ns/iter (± 6061) 664136 ns/iter (± 236) 0.96
es/lexer/three 20579040 ns/iter (± 192134) 21310777 ns/iter (± 28927) 0.97
es/lexer/yui 3657260 ns/iter (± 43591) 3820101 ns/iter (± 5703) 0.96
es/parser/colors 25962 ns/iter (± 501) 26863 ns/iter (± 47) 0.97
es/parser/angular 12967541 ns/iter (± 165994) 13466235 ns/iter (± 45866) 0.96
es/parser/backbone 1901893 ns/iter (± 31378) 1977493 ns/iter (± 9296) 0.96
es/parser/jquery 10418478 ns/iter (± 137224) 10799811 ns/iter (± 48406) 0.96
es/parser/jquery mobile 15909266 ns/iter (± 221344) 16452396 ns/iter (± 108642) 0.97
es/parser/mootools 8016606 ns/iter (± 100191) 8287636 ns/iter (± 14817) 0.97
es/parser/underscore 1637926 ns/iter (± 17536) 1704279 ns/iter (± 9019) 0.96
es/parser/three 44316823 ns/iter (± 412227) 46373118 ns/iter (± 229101) 0.96
es/parser/yui 7990828 ns/iter (± 90545) 8181685 ns/iter (± 28536) 0.98
es/preset-env/usage/builtin_type 132970 ns/iter (± 31816) 134856 ns/iter (± 31193) 0.99
es/preset-env/usage/property 16264 ns/iter (± 194) 16726 ns/iter (± 55) 0.97
es/resolver/typescript 84503140 ns/iter (± 2557963) 88839795 ns/iter (± 1314759) 0.95
es/fixer/typescript 60462928 ns/iter (± 550513) 64538537 ns/iter (± 351320) 0.94
es/hygiene/typescript 125512609 ns/iter (± 873512) 128686211 ns/iter (± 1024308) 0.98
es/resolver_with_hygiene/typescript 231184326 ns/iter (± 1686676) 237227459 ns/iter (± 700631) 0.97
es/visitor/base-perf/module_clone 57849 ns/iter (± 760) 59106 ns/iter (± 294) 0.98
es/visitor/base-perf/fold_empty 61048 ns/iter (± 999) 62804 ns/iter (± 308) 0.97
es/visitor/base-perf/fold_noop_impl_all 61942 ns/iter (± 727) 63434 ns/iter (± 184) 0.98
es/visitor/base-perf/fold_noop_impl_vec 61098 ns/iter (± 528) 63215 ns/iter (± 289) 0.97
es/visitor/base-perf/boxing_boxed_clone 54 ns/iter (± 0) 58 ns/iter (± 0) 0.93
es/visitor/base-perf/boxing_unboxed_clone 39 ns/iter (± 0) 40 ns/iter (± 0) 0.97
es/visitor/base-perf/boxing_boxed 109 ns/iter (± 1) 110 ns/iter (± 0) 0.99
es/visitor/base-perf/boxing_unboxed 76 ns/iter (± 0) 78 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 2600 ns/iter (± 43) 2646 ns/iter (± 26) 0.98
es/base/parallel/resolver/typescript 3683720339 ns/iter (± 304707103) 3762158287 ns/iter (± 271735695) 0.98
es/base/parallel/hygiene/typescript 1415863347 ns/iter (± 19165220) 1419626358 ns/iter (± 16199542) 1.00
misc/visitors/time-complexity/time 5 130 ns/iter (± 2) 132 ns/iter (± 1) 0.98
misc/visitors/time-complexity/time 10 371 ns/iter (± 9) 396 ns/iter (± 3) 0.94
misc/visitors/time-complexity/time 15 657 ns/iter (± 10) 671 ns/iter (± 4) 0.98
misc/visitors/time-complexity/time 20 1044 ns/iter (± 13) 1053 ns/iter (± 5) 0.99
misc/visitors/time-complexity/time 40 3397 ns/iter (± 48) 3492 ns/iter (± 10) 0.97
misc/visitors/time-complexity/time 60 7113 ns/iter (± 65) 7287 ns/iter (± 20) 0.98
es/full-target/es2016 227072 ns/iter (± 1750) 230282 ns/iter (± 707) 0.99
es/full-target/es2017 212160 ns/iter (± 3351) 219165 ns/iter (± 1110) 0.97
es/full-target/es2018 199937 ns/iter (± 2462) 206621 ns/iter (± 206) 0.97
es2020_nullish_coalescing 68914 ns/iter (± 996) 71008 ns/iter (± 307) 0.97
es2020_optional_chaining 78116 ns/iter (± 1263) 81566 ns/iter (± 257) 0.96
es2022_class_properties 111283 ns/iter (± 1474) 116375 ns/iter (± 239) 0.96
es2018_object_rest_spread 74534 ns/iter (± 603) 75448 ns/iter (± 335) 0.99
es2019_optional_catch_binding 64184 ns/iter (± 633) 64207 ns/iter (± 232) 1.00
es2017_async_to_generator 62363 ns/iter (± 749) 64101 ns/iter (± 162) 0.97
es2016_exponentiation 67158 ns/iter (± 684) 68672 ns/iter (± 170) 0.98
es2015_arrow 69776 ns/iter (± 1175) 71729 ns/iter (± 244) 0.97
es2015_block_scoped_fn 66461 ns/iter (± 1084) 68479 ns/iter (± 131) 0.97
es2015_block_scoping 120502 ns/iter (± 1374) 123535 ns/iter (± 590) 0.98

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

Please sign in to comment.