Skip to content

Commit

Permalink
fix(es/codegen): Emit type_params for TsConstructSignatureDecl (#…
Browse files Browse the repository at this point in the history
…7080)

**Related issue:**

 - Closes #7079.
  • Loading branch information
magic-akari committed Mar 17, 2023
1 parent 32b4d7b commit 8353acc
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 2 deletions.
6 changes: 5 additions & 1 deletion crates/swc_ecma_codegen/src/typescript.rs
Expand Up @@ -100,6 +100,10 @@ where
self.emit_leading_comments_of_span(n.span(), false)?;

keyword!("new");
if let Some(type_params) = &n.type_params {
space!();
emit!(type_params);
}

punct!("(");
self.emit_list(n.span, Some(&n.params), ListFormat::Parameters)?;
Expand All @@ -122,8 +126,8 @@ where
}

keyword!("new");
space!();
if let Some(type_params) = &n.type_params {
space!();
emit!(type_params);
}

Expand Down
3 changes: 3 additions & 0 deletions crates/swc_ecma_codegen/tests/fixture/issues/7079/input.ts
@@ -0,0 +1,3 @@
interface Foo {
new <T>(value: T): Obj<T>;
}
3 changes: 3 additions & 0 deletions crates/swc_ecma_codegen/tests/fixture/issues/7079/output.ts
@@ -0,0 +1,3 @@
interface Foo {
new <T>(value: T): Obj<T>;
}
Expand Up @@ -4,7 +4,7 @@ interface Mixin1__1 {
class AbstractBase__1 {
abstractBaseMethod(): void;
}
function Mixin2__1<TBase__2 extends abstract new (...args: any[]) => any>(baseClass__2: TBase__2) {
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 {}
Expand Down

1 comment on commit 8353acc

@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: 8353acc Previous: 0086914 Ratio
es/full/bugs-1 301885 ns/iter (± 9353) 290273 ns/iter (± 11187) 1.04
es/full/minify/libraries/antd 1580029707 ns/iter (± 26306516) 1618876345 ns/iter (± 32472006) 0.98
es/full/minify/libraries/d3 295003711 ns/iter (± 6418871) 288653964 ns/iter (± 6743002) 1.02
es/full/minify/libraries/echarts 1203909233 ns/iter (± 10842554) 1193792367 ns/iter (± 16161577) 1.01
es/full/minify/libraries/jquery 89260421 ns/iter (± 1258964) 89131021 ns/iter (± 388626) 1.00
es/full/minify/libraries/lodash 103745469 ns/iter (± 956442) 105236042 ns/iter (± 1134894) 0.99
es/full/minify/libraries/moment 51730490 ns/iter (± 254780) 51565275 ns/iter (± 241456) 1.00
es/full/minify/libraries/react 18835248 ns/iter (± 187306) 18730368 ns/iter (± 105608) 1.01
es/full/minify/libraries/terser 238830515 ns/iter (± 2562555) 239441296 ns/iter (± 2576391) 1.00
es/full/minify/libraries/three 422688847 ns/iter (± 10589092) 423719900 ns/iter (± 4557115) 1.00
es/full/minify/libraries/typescript 3035628227 ns/iter (± 21104614) 3039236306 ns/iter (± 33966531) 1.00
es/full/minify/libraries/victory 628884404 ns/iter (± 16289999) 642076542 ns/iter (± 15631913) 0.98
es/full/minify/libraries/vue 125398182 ns/iter (± 1592252) 128555636 ns/iter (± 929759) 0.98
es/full/codegen/es3 25957 ns/iter (± 211) 26771 ns/iter (± 173) 0.97
es/full/codegen/es5 26194 ns/iter (± 144) 26926 ns/iter (± 58) 0.97
es/full/codegen/es2015 26097 ns/iter (± 96) 26878 ns/iter (± 36) 0.97
es/full/codegen/es2016 26063 ns/iter (± 341) 26844 ns/iter (± 74) 0.97
es/full/codegen/es2017 26213 ns/iter (± 48) 26841 ns/iter (± 32) 0.98
es/full/codegen/es2018 26217 ns/iter (± 64) 26874 ns/iter (± 54) 0.98
es/full/codegen/es2019 26136 ns/iter (± 88) 26927 ns/iter (± 94) 0.97
es/full/codegen/es2020 26174 ns/iter (± 173) 26866 ns/iter (± 72) 0.97
es/full/all/es3 181369818 ns/iter (± 2997542) 180400305 ns/iter (± 2575616) 1.01
es/full/all/es5 172063664 ns/iter (± 1569858) 168138737 ns/iter (± 4058590) 1.02
es/full/all/es2015 135501046 ns/iter (± 2127646) 133687377 ns/iter (± 2200530) 1.01
es/full/all/es2016 133506030 ns/iter (± 2052564) 130139626 ns/iter (± 1232160) 1.03
es/full/all/es2017 132849589 ns/iter (± 1817375) 129585758 ns/iter (± 1343361) 1.03
es/full/all/es2018 129185069 ns/iter (± 1053435) 124635311 ns/iter (± 1227496) 1.04
es/full/all/es2019 126418816 ns/iter (± 2187297) 121511641 ns/iter (± 1661521) 1.04
es/full/all/es2020 119529990 ns/iter (± 592356) 117232021 ns/iter (± 534743) 1.02
es/full/parser 533804 ns/iter (± 7258) 526366 ns/iter (± 7967) 1.01
es/full/base/fixer 22496 ns/iter (± 114) 22356 ns/iter (± 81) 1.01
es/full/base/resolver_and_hygiene 85287 ns/iter (± 167) 81881 ns/iter (± 176) 1.04
serialization of ast node 127 ns/iter (± 0) 124 ns/iter (± 0) 1.02
serialization of serde 126 ns/iter (± 0) 126 ns/iter (± 0) 1
css/minify/libraries/bootstrap 28114163 ns/iter (± 133257) 28103580 ns/iter (± 92529) 1.00
css/visitor/compare/clone 2043493 ns/iter (± 17075) 2066510 ns/iter (± 20601) 0.99
css/visitor/compare/visit_mut_span 2256944 ns/iter (± 14423) 2254016 ns/iter (± 6457) 1.00
css/visitor/compare/visit_mut_span_panic 2324461 ns/iter (± 11577) 2310987 ns/iter (± 7453) 1.01
css/visitor/compare/fold_span 3013226 ns/iter (± 18768) 3004650 ns/iter (± 20100) 1.00
css/visitor/compare/fold_span_panic 3153433 ns/iter (± 27465) 3154634 ns/iter (± 19670) 1.00
css/lexer/bootstrap_5_1_3 5081613 ns/iter (± 34280) 5144865 ns/iter (± 10992) 0.99
css/lexer/foundation_6_7_4 4279004 ns/iter (± 26280) 4332601 ns/iter (± 9970) 0.99
css/lexer/tailwind_3_1_1 812705 ns/iter (± 6921) 818144 ns/iter (± 1985) 0.99
css/parser/bootstrap_5_1_3 21831327 ns/iter (± 99673) 21684614 ns/iter (± 189723) 1.01
css/parser/foundation_6_7_4 17398884 ns/iter (± 150955) 17249183 ns/iter (± 94865) 1.01
css/parser/tailwind_3_1_1 3343548 ns/iter (± 8792) 3338386 ns/iter (± 6923) 1.00
es/codegen/colors 328649 ns/iter (± 185435) 329777 ns/iter (± 186411) 1.00
es/codegen/large 1357959 ns/iter (± 690328) 1234066 ns/iter (± 643789) 1.10
es/codegen/with-parser/colors 47909 ns/iter (± 338) 48333 ns/iter (± 336) 0.99
es/codegen/with-parser/large 523867 ns/iter (± 2092) 540113 ns/iter (± 2058) 0.97
es/minify/libraries/antd 1358530442 ns/iter (± 24086774) 1436958759 ns/iter (± 28611219) 0.95
es/minify/libraries/d3 243857935 ns/iter (± 10111656) 259952389 ns/iter (± 10373919) 0.94
es/minify/libraries/echarts 1028014235 ns/iter (± 17691378) 1123152371 ns/iter (± 31846679) 0.92
es/minify/libraries/jquery 77109403 ns/iter (± 799809) 81999638 ns/iter (± 690918) 0.94
es/minify/libraries/lodash 91776234 ns/iter (± 716028) 98468541 ns/iter (± 876667) 0.93
es/minify/libraries/moment 45175180 ns/iter (± 445246) 47003286 ns/iter (± 798162) 0.96
es/minify/libraries/react 16936336 ns/iter (± 118086) 16837940 ns/iter (± 146595) 1.01
es/minify/libraries/terser 198436495 ns/iter (± 862761) 204081066 ns/iter (± 1925763) 0.97
es/minify/libraries/three 334799394 ns/iter (± 4622935) 359294288 ns/iter (± 6646134) 0.93
es/minify/libraries/typescript 2552884007 ns/iter (± 35856986) 2598872259 ns/iter (± 16546595) 0.98
es/minify/libraries/victory 529840413 ns/iter (± 13026617) 535524929 ns/iter (± 5698244) 0.99
es/minify/libraries/vue 112278165 ns/iter (± 1200026) 113618134 ns/iter (± 477317) 0.99
es/visitor/compare/clone 2287286 ns/iter (± 21862) 2300709 ns/iter (± 5236) 0.99
es/visitor/compare/visit_mut_span 2634222 ns/iter (± 23891) 2665706 ns/iter (± 19372) 0.99
es/visitor/compare/visit_mut_span_panic 2656558 ns/iter (± 12699) 2724487 ns/iter (± 7485) 0.98
es/visitor/compare/fold_span 3727474 ns/iter (± 28488) 3771277 ns/iter (± 10322) 0.99
es/visitor/compare/fold_span_panic 3868119 ns/iter (± 23387) 3941335 ns/iter (± 20099) 0.98
es/lexer/colors 15118 ns/iter (± 99) 15482 ns/iter (± 20) 0.98
es/lexer/angular 7303065 ns/iter (± 66898) 7478313 ns/iter (± 6683) 0.98
es/lexer/backbone 980532 ns/iter (± 2750) 998149 ns/iter (± 483) 0.98
es/lexer/jquery 5515613 ns/iter (± 57894) 5617416 ns/iter (± 4817) 0.98
es/lexer/jquery mobile 8501995 ns/iter (± 45943) 8639887 ns/iter (± 6332) 0.98
es/lexer/mootools 4349929 ns/iter (± 24642) 4461924 ns/iter (± 1611) 0.97
es/lexer/underscore 822742 ns/iter (± 6734) 843524 ns/iter (± 1240) 0.98
es/lexer/three 25686738 ns/iter (± 254918) 26303133 ns/iter (± 12335) 0.98
es/lexer/yui 4570664 ns/iter (± 25133) 4702894 ns/iter (± 950) 0.97
es/parser/colors 29304 ns/iter (± 63) 29528 ns/iter (± 58) 0.99
es/parser/angular 15290180 ns/iter (± 194006) 15284270 ns/iter (± 77978) 1.00
es/parser/backbone 2229148 ns/iter (± 12707) 2229023 ns/iter (± 13572) 1.00
es/parser/jquery 12032086 ns/iter (± 84973) 12096811 ns/iter (± 123326) 0.99
es/parser/jquery mobile 18498315 ns/iter (± 195009) 18827140 ns/iter (± 106657) 0.98
es/parser/mootools 9144918 ns/iter (± 82859) 9192134 ns/iter (± 21735) 0.99
es/parser/underscore 1878618 ns/iter (± 10620) 1895495 ns/iter (± 11365) 0.99
es/parser/three 53356793 ns/iter (± 1073530) 54044194 ns/iter (± 364728) 0.99
es/parser/yui 9153563 ns/iter (± 77946) 9238152 ns/iter (± 45497) 0.99
es/preset-env/usage/builtin_type 143438 ns/iter (± 34722) 143692 ns/iter (± 35568) 1.00
es/preset-env/usage/property 21512 ns/iter (± 51) 21064 ns/iter (± 80) 1.02
es/resolver/typescript 115773555 ns/iter (± 2203364) 113252345 ns/iter (± 1227767) 1.02
es/fixer/typescript 90498882 ns/iter (± 1554402) 84637003 ns/iter (± 1130928) 1.07
es/hygiene/typescript 188101828 ns/iter (± 1919255) 182341869 ns/iter (± 1805672) 1.03
es/resolver_with_hygiene/typescript 332936964 ns/iter (± 3287909) 326316910 ns/iter (± 3089780) 1.02
es/visitor/base-perf/module_clone 78624 ns/iter (± 822) 79928 ns/iter (± 1043) 0.98
es/visitor/base-perf/fold_empty 89262 ns/iter (± 1186) 90420 ns/iter (± 1067) 0.99
es/visitor/base-perf/fold_noop_impl_all 89911 ns/iter (± 1349) 89493 ns/iter (± 1780) 1.00
es/visitor/base-perf/fold_noop_impl_vec 89589 ns/iter (± 1605) 90574 ns/iter (± 1219) 0.99
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 56 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 54 ns/iter (± 0) 54 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 104 ns/iter (± 0) 103 ns/iter (± 0) 1.01
es/visitor/base-perf/boxing_unboxed 100 ns/iter (± 0) 97 ns/iter (± 0) 1.03
es/visitor/base-perf/visit_contains_this 3667 ns/iter (± 57) 3420 ns/iter (± 62) 1.07
es/base/parallel/resolver/typescript 5868927701 ns/iter (± 497941948) 5482712039 ns/iter (± 465434718) 1.07
es/base/parallel/hygiene/typescript 2173921603 ns/iter (± 11555993) 2179553637 ns/iter (± 38243890) 1.00
misc/visitors/time-complexity/time 5 91 ns/iter (± 0) 91 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 289 ns/iter (± 0) 290 ns/iter (± 8) 1.00
misc/visitors/time-complexity/time 15 597 ns/iter (± 16) 603 ns/iter (± 12) 0.99
misc/visitors/time-complexity/time 20 1117 ns/iter (± 23) 1149 ns/iter (± 28) 0.97
misc/visitors/time-complexity/time 40 5938 ns/iter (± 40) 5931 ns/iter (± 43) 1.00
misc/visitors/time-complexity/time 60 15274 ns/iter (± 57) 15280 ns/iter (± 71) 1.00
es/full-target/es2016 249601 ns/iter (± 528) 250358 ns/iter (± 402) 1.00
es/full-target/es2017 243242 ns/iter (± 712) 242446 ns/iter (± 482) 1.00
es/full-target/es2018 231981 ns/iter (± 355) 231529 ns/iter (± 531) 1.00
es2020_nullish_coalescing 91684 ns/iter (± 697) 92063 ns/iter (± 538) 1.00
es2020_optional_chaining 123864 ns/iter (± 470) 123949 ns/iter (± 390) 1.00
es2022_class_properties 146747 ns/iter (± 443) 146686 ns/iter (± 345) 1.00
es2018_object_rest_spread 94869 ns/iter (± 376) 95113 ns/iter (± 226) 1.00
es2019_optional_catch_binding 84384 ns/iter (± 204) 84628 ns/iter (± 211) 1.00
es2017_async_to_generator 84937 ns/iter (± 219) 85415 ns/iter (± 281) 0.99
es2016_exponentiation 89034 ns/iter (± 314) 89045 ns/iter (± 296) 1.00
es2015_arrow 93994 ns/iter (± 664) 93269 ns/iter (± 276) 1.01
es2015_block_scoped_fn 91109 ns/iter (± 356) 91351 ns/iter (± 227) 1.00
es2015_block_scoping 168730 ns/iter (± 387) 168711 ns/iter (± 597) 1.00

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

Please sign in to comment.