Skip to content

Commit

Permalink
fix(es/typescript): Don't generate class field for abstract properties (
Browse files Browse the repository at this point in the history
  • Loading branch information
Austaras committed Oct 16, 2022
1 parent 55a836a commit 9d93b6c
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@ class A {
foo() {
console.log(this.x);
}
constructor(){
_define_property(this, "x", void 0);
}
}
class B extends A {
constructor(...args){
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
//// [abstractProperty.ts]
class A {
x;
foo() {
console.log(this.x);
}
Expand Down
7 changes: 6 additions & 1 deletion crates/swc_ecma_transforms_typescript/src/strip.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1972,7 +1972,12 @@ where
{
false
}
ClassMember::ClassProp(ClassProp { declare: true, .. }) => false,
ClassMember::ClassProp(
ClassProp { declare: true, .. }
| ClassProp {
is_abstract: true, ..
},
) => false,
ClassMember::ClassProp(ClassProp {
value: None,
ref decorators,
Expand Down
18 changes: 18 additions & 0 deletions crates/swc_ecma_transforms_typescript/tests/strip.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4637,3 +4637,21 @@ test!(
foo();
"#
);

test_with_config!(
issue_6023,
strip::Config {
use_define_for_class_fields: true,
..Default::default()
},
"
abstract class Shape {
abstract height: number;
abstract width: number;
}
",
"
class Shape {
}
"
);

1 comment on commit 9d93b6c

@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: 9d93b6c Previous: b398dcd Ratio
es/full/minify/libraries/antd 2073234894 ns/iter (± 19848985) 1814119118 ns/iter (± 39250353) 1.14
es/full/minify/libraries/d3 398366787 ns/iter (± 15265870) 414006494 ns/iter (± 18535995) 0.96
es/full/minify/libraries/echarts 1734209858 ns/iter (± 37477870) 1562972645 ns/iter (± 31178595) 1.11
es/full/minify/libraries/jquery 118882879 ns/iter (± 8210495) 102752419 ns/iter (± 6732646) 1.16
es/full/minify/libraries/lodash 131580810 ns/iter (± 3308061) 117876050 ns/iter (± 3013242) 1.12
es/full/minify/libraries/moment 72251477 ns/iter (± 2517363) 61306265 ns/iter (± 4433553) 1.18
es/full/minify/libraries/react 24814295 ns/iter (± 1582547) 21388678 ns/iter (± 3744400) 1.16
es/full/minify/libraries/terser 328828116 ns/iter (± 6827056) 338122466 ns/iter (± 23835416) 0.97
es/full/minify/libraries/three 607045653 ns/iter (± 18637696) 561391318 ns/iter (± 31094324) 1.08
es/full/minify/libraries/typescript 4214543205 ns/iter (± 674186858) 3487555954 ns/iter (± 117361718) 1.21
es/full/minify/libraries/victory 894493886 ns/iter (± 47348797) 827019988 ns/iter (± 51617864) 1.08
es/full/minify/libraries/vue 174329292 ns/iter (± 8921974) 161965615 ns/iter (± 19711133) 1.08
es/full/codegen/es3 41616 ns/iter (± 2311) 34015 ns/iter (± 624) 1.22
es/full/codegen/es5 43094 ns/iter (± 4383) 34189 ns/iter (± 1097) 1.26
es/full/codegen/es2015 42807 ns/iter (± 3496) 34553 ns/iter (± 2055) 1.24
es/full/codegen/es2016 41620 ns/iter (± 1933) 34397 ns/iter (± 885) 1.21
es/full/codegen/es2017 42127 ns/iter (± 1868) 34395 ns/iter (± 1313) 1.22
es/full/codegen/es2018 42478 ns/iter (± 3888) 34534 ns/iter (± 2568) 1.23
es/full/codegen/es2019 42874 ns/iter (± 3762) 34332 ns/iter (± 2222) 1.25
es/full/codegen/es2020 42183 ns/iter (± 972) 40744 ns/iter (± 11048) 1.04
es/full/all/es3 238705941 ns/iter (± 12483700) 238518169 ns/iter (± 23943529) 1.00
es/full/all/es5 229914990 ns/iter (± 19648778) 229400333 ns/iter (± 28415730) 1.00
es/full/all/es2015 183577697 ns/iter (± 15615173) 179377619 ns/iter (± 17007307) 1.02
es/full/all/es2016 182865052 ns/iter (± 10149410) 169224051 ns/iter (± 15096930) 1.08
es/full/all/es2017 181004709 ns/iter (± 11920910) 187994481 ns/iter (± 23185778) 0.96
es/full/all/es2018 177253820 ns/iter (± 8044092) 190994787 ns/iter (± 19072101) 0.93
es/full/all/es2019 180342817 ns/iter (± 15732890) 173812496 ns/iter (± 31571557) 1.04
es/full/all/es2020 174461485 ns/iter (± 20908388) 162327625 ns/iter (± 17110286) 1.07
es/full/parser 925317 ns/iter (± 39110) 773771 ns/iter (± 69883) 1.20
es/full/base/fixer 34658 ns/iter (± 1279) 27537 ns/iter (± 3417) 1.26
es/full/base/resolver_and_hygiene 115437 ns/iter (± 5441) 97409 ns/iter (± 9102) 1.19
serialization of ast node 253 ns/iter (± 6) 210 ns/iter (± 9) 1.20
serialization of serde 254 ns/iter (± 17) 215 ns/iter (± 14) 1.18

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

Please sign in to comment.