Skip to content

Commit

Permalink
fix(es/codegen): Emit decorators on class methods (#4103)
Browse files Browse the repository at this point in the history
  • Loading branch information
kdy1 committed Mar 20, 2022
1 parent 133bfb4 commit 9b64a69
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 10 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions crates/swc_bundler/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ swc_ecma_loader = { version = "0.29.0", path = "../swc_ecma_loader", features =
"cache",
] }
swc_ecma_minifier = { version = "0.94.0", path = "../swc_ecma_minifier" }
swc_ecma_transforms_proposal = { version = "0.91.0", path = "../swc_ecma_transforms_proposal" }
swc_ecma_transforms_react = { version = "0.98.0", path = "../swc_ecma_transforms_react" }
swc_ecma_transforms_typescript = { version = "0.101.0", path = "../swc_ecma_transforms_typescript" }
swc_node_base = { version = "0.5.0", path = "../swc_node_base" }
Expand Down
31 changes: 21 additions & 10 deletions crates/swc_bundler/tests/common/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@ use swc_common::{
};
use swc_ecma_ast::EsVersion;
use swc_ecma_parser::{parse_file_as_module, Syntax, TsConfig};
use swc_ecma_transforms_base::resolver::resolver_with_mark;
use swc_ecma_transforms_base::{
helpers::{inject_helpers, Helpers, HELPERS},
resolver::resolver_with_mark,
};
use swc_ecma_transforms_proposal::decorators;
use swc_ecma_transforms_react::react;
use swc_ecma_transforms_typescript::strip;
use swc_ecma_visit::FoldWith;
Expand Down Expand Up @@ -128,15 +132,22 @@ impl Load for Loader {
});

let mark = Mark::fresh(Mark::root());
let module = module
.fold_with(&mut resolver_with_mark(mark))
.fold_with(&mut strip(mark))
.fold_with(&mut react::<SingleThreadedComments>(
self.cm.clone(),
None,
Default::default(),
top_level_mark,
));
let module = HELPERS.set(&Helpers::new(false), || {
module
.fold_with(&mut resolver_with_mark(mark))
.fold_with(&mut decorators(decorators::Config {
legacy: true,
emit_metadata: Default::default(),
}))
.fold_with(&mut strip(mark))
.fold_with(&mut react::<SingleThreadedComments>(
self.cm.clone(),
None,
Default::default(),
top_level_mark,
))
.fold_with(&mut inject_helpers())
});

Ok(ModuleData {
fm,
Expand Down
4 changes: 4 additions & 0 deletions crates/swc_ecma_codegen/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1223,6 +1223,10 @@ where

srcmap!(n, true);

for d in &n.function.decorators {
emit!(d);
}

self.emit_accessibility(n.accessibility)?;

if n.is_static {
Expand Down

2 comments on commit 9b64a69

@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: 9b64a69 Previous: 552f16d Ratio
base_tr_fixer 23494 ns/iter (± 278) 26644 ns/iter (± 1502) 0.88
base_tr_resolver_and_hygiene 95696 ns/iter (± 13471) 112082 ns/iter (± 3677) 0.85
codegen_es2015 31168 ns/iter (± 230) 37190 ns/iter (± 1514) 0.84
codegen_es2016 31158 ns/iter (± 163) 37397 ns/iter (± 731) 0.83
codegen_es2017 31014 ns/iter (± 1095) 37287 ns/iter (± 2708) 0.83
codegen_es2018 31018 ns/iter (± 204) 37238 ns/iter (± 789) 0.83
codegen_es2019 31161 ns/iter (± 200) 37283 ns/iter (± 1043) 0.84
codegen_es2020 31108 ns/iter (± 468) 37319 ns/iter (± 3472) 0.83
codegen_es3 31088 ns/iter (± 308) 37210 ns/iter (± 1529) 0.84
codegen_es5 31017 ns/iter (± 229) 37270 ns/iter (± 410) 0.83
full_es2015 138579802 ns/iter (± 3922547) 160543085 ns/iter (± 14509655) 0.86
full_es2016 137416341 ns/iter (± 5340728) 159387570 ns/iter (± 9747606) 0.86
full_es2017 137074102 ns/iter (± 4347021) 158443105 ns/iter (± 11209032) 0.87
full_es2018 136376673 ns/iter (± 2824359) 157130355 ns/iter (± 10146757) 0.87
full_es2019 135612069 ns/iter (± 14678025) 156134296 ns/iter (± 12617791) 0.87
full_es2020 120065854 ns/iter (± 5125848) 151174655 ns/iter (± 7907663) 0.79
full_es3 182267120 ns/iter (± 4440589) 213567152 ns/iter (± 9965727) 0.85
full_es5 172989402 ns/iter (± 4845704) 204308389 ns/iter (± 15425338) 0.85
parser 562463 ns/iter (± 13306) 643992 ns/iter (± 36254) 0.87
ser_ast_node 146 ns/iter (± 3) 173 ns/iter (± 9) 0.84
ser_serde 144 ns/iter (± 1) 173 ns/iter (± 11) 0.83
emit_colors 15391277 ns/iter (± 12451275) 5865587 ns/iter (± 4142930) 2.62
emit_large 76265256 ns/iter (± 104452176) 62694581 ns/iter (± 84465544) 1.22
base_clone 2227494 ns/iter (± 49089) 3037923 ns/iter (± 345236) 0.73
fold_span 4098067 ns/iter (± 607059) 4713716 ns/iter (± 387638) 0.87
fold_span_panic 4126197 ns/iter (± 319309) 4807462 ns/iter (± 476261) 0.86
visit_mut_span 2756236 ns/iter (± 138988) 3335136 ns/iter (± 151832) 0.83
visit_mut_span_panic 2812427 ns/iter (± 136724) 3406609 ns/iter (± 247330) 0.83
usage_builtin_type 15938525 ns/iter (± 9948865) 18848233 ns/iter (± 11843916) 0.85
usage_property 397532 ns/iter (± 1913) 475013 ns/iter (± 16565) 0.84
boxing_boxed 133 ns/iter (± 1) 159 ns/iter (± 5) 0.84
boxing_boxed_clone 69 ns/iter (± 0) 83 ns/iter (± 6) 0.83
boxing_unboxed 121 ns/iter (± 1) 143 ns/iter (± 5) 0.85
boxing_unboxed_clone 63 ns/iter (± 0) 84 ns/iter (± 5) 0.75
time_10 321 ns/iter (± 28) 418 ns/iter (± 12) 0.77
time_15 703 ns/iter (± 10) 820 ns/iter (± 21) 0.86
time_20 1482 ns/iter (± 8) 1362 ns/iter (± 46) 1.09
time_40 7116 ns/iter (± 40) 5004 ns/iter (± 267) 1.42
time_5 99 ns/iter (± 1) 122 ns/iter (± 6) 0.81
time_60 16280 ns/iter (± 75) 10330 ns/iter (± 334) 1.58
total 0 ns/iter (± 0) 0 ns/iter (± 0) NaN

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

@github-actions
Copy link

Choose a reason for hiding this comment

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

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 2.

Benchmark suite Current: 9b64a69 Previous: 552f16d Ratio
emit_colors 15391277 ns/iter (± 12451275) 5865587 ns/iter (± 4142930) 2.62

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

CC: @kdy1

Please sign in to comment.