Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(es/resolver): Resolve interfaces correctly (#6387)
**Related issue:** - dudykr/stc#245.
- Loading branch information
Showing
6 changed files
with
64 additions
and
4 deletions.
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
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
24 changes: 24 additions & 0 deletions
24
crates/swc_ecma_transforms_base/tests/ts-resolver/stc/1/input.ts
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,24 @@ | ||
// @target: esnext | ||
// @declaration: true | ||
|
||
interface Mixin1 { | ||
mixinMethod(): void; | ||
} | ||
|
||
abstract class AbstractBase { | ||
abstract abstractBaseMethod(): void; | ||
} | ||
|
||
function Mixin2<TBase extends abstract new (...args: any[]) => any>(baseClass: TBase) { | ||
// must be `abstract` because we cannot know *all* of the possible abstract members that need to be | ||
// implemented for this to be concrete. | ||
abstract class MixinClass extends baseClass implements Mixin1 { | ||
mixinMethod(): void {} | ||
static staticMixinMethod(): void {} | ||
} | ||
return MixinClass; | ||
} | ||
|
||
class DerivedFromAbstract2 extends Mixin2(AbstractBase) { | ||
abstractBaseMethod() {} | ||
} |
16 changes: 16 additions & 0 deletions
16
crates/swc_ecma_transforms_base/tests/ts-resolver/stc/1/output.ts
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,16 @@ | ||
interface Mixin1__1 { | ||
mixinMethod__0(): void; | ||
} | ||
class AbstractBase__1 { | ||
abstractBaseMethod(): void; | ||
} | ||
function Mixin2__1<TBase__2 extends abstract new (...args: any[]) => any>(baseClass__2: TBase__2) { | ||
class MixinClass__2 extends baseClass__2 implements Mixin1__1 { | ||
mixinMethod(): void {} | ||
static staticMixinMethod(): void {} | ||
} | ||
return MixinClass__2; | ||
} | ||
class DerivedFromAbstract2__1 extends Mixin2__1(AbstractBase__1) { | ||
abstractBaseMethod() {} | ||
} |
2 changes: 1 addition & 1 deletion
2
...es/swc_ecma_transforms_base/tests/ts-resolver/ts_resolver_import_and_implements/output.ts
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 |
---|---|---|
@@ -1,5 +1,5 @@ | ||
import { Nullable__1 } from "nullable"; | ||
import { Component__1 } from "react"; | ||
class Foo__1 { | ||
class Foo__1 implements Component__1<Nullable__1> { | ||
} | ||
new Foo__1(); |
2 changes: 1 addition & 1 deletion
2
crates/swc_ecma_transforms_base/tests/ts-resolver/ts_resolver_parameter_property/output.ts
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
6b876c4
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
411671
ns/iter (± 31736
)349665
ns/iter (± 19952
)1.18
es/full/minify/libraries/antd
1988966189
ns/iter (± 60874290
)1913935347
ns/iter (± 717884934
)1.04
es/full/minify/libraries/d3
416682177
ns/iter (± 8596625
)431164593
ns/iter (± 10389337
)0.97
es/full/minify/libraries/echarts
1604898915
ns/iter (± 29701208
)1609843463
ns/iter (± 62060950
)1.00
es/full/minify/libraries/jquery
103165109
ns/iter (± 2771043
)102964506
ns/iter (± 4605892
)1.00
es/full/minify/libraries/lodash
121539529
ns/iter (± 5330926
)133234758
ns/iter (± 4146128
)0.91
es/full/minify/libraries/moment
60732244
ns/iter (± 631535
)68781109
ns/iter (± 2592595
)0.88
es/full/minify/libraries/react
20573003
ns/iter (± 278138
)22912492
ns/iter (± 1831906
)0.90
es/full/minify/libraries/terser
316443892
ns/iter (± 8229576
)325763725
ns/iter (± 27244793
)0.97
es/full/minify/libraries/three
570641046
ns/iter (± 17719278
)572042920
ns/iter (± 39100126
)1.00
es/full/minify/libraries/typescript
3404777680
ns/iter (± 51876224
)3487447997
ns/iter (± 182143318
)0.98
es/full/minify/libraries/victory
842431484
ns/iter (± 13971965
)872739815
ns/iter (± 27250947
)0.97
es/full/minify/libraries/vue
157026033
ns/iter (± 2277267
)180261896
ns/iter (± 16971402
)0.87
es/full/codegen/es3
33669
ns/iter (± 925
)35123
ns/iter (± 2202
)0.96
es/full/codegen/es5
33453
ns/iter (± 844
)33876
ns/iter (± 3808
)0.99
es/full/codegen/es2015
33143
ns/iter (± 944
)33522
ns/iter (± 1000
)0.99
es/full/codegen/es2016
33397
ns/iter (± 1814
)33607
ns/iter (± 887
)0.99
es/full/codegen/es2017
33387
ns/iter (± 1293
)33478
ns/iter (± 798
)1.00
es/full/codegen/es2018
33354
ns/iter (± 1851
)33381
ns/iter (± 2341
)1.00
es/full/codegen/es2019
33533
ns/iter (± 1102
)33585
ns/iter (± 919
)1.00
es/full/codegen/es2020
33275
ns/iter (± 1182
)33808
ns/iter (± 1233
)0.98
es/full/all/es3
190597174
ns/iter (± 4935335
)195598291
ns/iter (± 13921585
)0.97
es/full/all/es5
180455865
ns/iter (± 5251140
)187611336
ns/iter (± 11870303
)0.96
es/full/all/es2015
145241348
ns/iter (± 5794260
)148426616
ns/iter (± 8298313
)0.98
es/full/all/es2016
143889090
ns/iter (± 5014777
)147943092
ns/iter (± 9117504
)0.97
es/full/all/es2017
143390877
ns/iter (± 3555416
)147361104
ns/iter (± 9845160
)0.97
es/full/all/es2018
141034296
ns/iter (± 4647559
)144116961
ns/iter (± 9062409
)0.98
es/full/all/es2019
140720493
ns/iter (± 4116233
)145513182
ns/iter (± 6655203
)0.97
es/full/all/es2020
135365053
ns/iter (± 6352553
)139098700
ns/iter (± 13686634
)0.97
es/full/parser
720963
ns/iter (± 28027
)731982
ns/iter (± 95556
)0.98
es/full/base/fixer
26116
ns/iter (± 558
)26807
ns/iter (± 2036
)0.97
es/full/base/resolver_and_hygiene
90690
ns/iter (± 3944
)94041
ns/iter (± 7649
)0.96
serialization of ast node
216
ns/iter (± 6
)216
ns/iter (± 8
)1
serialization of serde
233
ns/iter (± 12
)215
ns/iter (± 16
)1.08
This comment was automatically generated by workflow using github-action-benchmark.