From dc25c5130963f60afaec8945b9f4de3cd9b3b80b Mon Sep 17 00:00:00 2001 From: David Sherret Date: Mon, 29 Jul 2024 13:01:56 -0400 Subject: [PATCH 1/3] fix(es/codegen): Emit question token for class methods --- crates/swc_ecma_codegen/src/lib.rs | 4 ++++ .../tests/fixture/typescript/class_method/input.js | 2 +- .../tests/fixture/typescript/class_method/output.js | 2 +- .../tests/fixture/typescript/class_method/output.min.js | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/crates/swc_ecma_codegen/src/lib.rs b/crates/swc_ecma_codegen/src/lib.rs index 3a9737fef6c5..f2901a69464a 100644 --- a/crates/swc_ecma_codegen/src/lib.rs +++ b/crates/swc_ecma_codegen/src/lib.rs @@ -1599,6 +1599,10 @@ where } } + if n.is_optional { + punct!("?"); + } + if let Some(type_params) = &n.function.type_params { emit!(type_params); } diff --git a/crates/swc_ecma_codegen/tests/fixture/typescript/class_method/input.js b/crates/swc_ecma_codegen/tests/fixture/typescript/class_method/input.js index 8ae861559ba8..51baf161b6b8 100644 --- a/crates/swc_ecma_codegen/tests/fixture/typescript/class_method/input.js +++ b/crates/swc_ecma_codegen/tests/fixture/typescript/class_method/input.js @@ -1,5 +1,5 @@ class MyClass extends Base { public override method(param: number): string { } - public abstract override log(msg: string): void; + public abstract override log?(msg: string): TValue; } diff --git a/crates/swc_ecma_codegen/tests/fixture/typescript/class_method/output.js b/crates/swc_ecma_codegen/tests/fixture/typescript/class_method/output.js index afa69c78aceb..d2efd95d7ba3 100644 --- a/crates/swc_ecma_codegen/tests/fixture/typescript/class_method/output.js +++ b/crates/swc_ecma_codegen/tests/fixture/typescript/class_method/output.js @@ -1,4 +1,4 @@ class MyClass extends Base { public override method(param: number): string {} - public abstract override log(msg: string): void; + public abstract override log?(msg: string): TValue; } diff --git a/crates/swc_ecma_codegen/tests/fixture/typescript/class_method/output.min.js b/crates/swc_ecma_codegen/tests/fixture/typescript/class_method/output.min.js index c59261408b32..69933daf3dbc 100644 --- a/crates/swc_ecma_codegen/tests/fixture/typescript/class_method/output.min.js +++ b/crates/swc_ecma_codegen/tests/fixture/typescript/class_method/output.min.js @@ -1 +1 @@ -class MyClass extends Base{public override method(param:number):string{}public abstract override log(msg:string):void} +class MyClass extends Base{public override method(param:number):string{}public abstract override log?(msg:string):TValue} From b0e704bd721066b5f5e1e21063c3978af4f08833 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Mon, 29 Jul 2024 13:18:21 -0400 Subject: [PATCH 2/3] fix type strip --- crates/swc_ecma_transforms_typescript/src/strip_type.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/swc_ecma_transforms_typescript/src/strip_type.rs b/crates/swc_ecma_transforms_typescript/src/strip_type.rs index 12c7e96ca93a..a6d0a6429263 100644 --- a/crates/swc_ecma_transforms_typescript/src/strip_type.rs +++ b/crates/swc_ecma_transforms_typescript/src/strip_type.rs @@ -84,6 +84,7 @@ impl VisitMut for StripType { n.accessibility = None; n.is_override = false; n.is_abstract = false; + n.is_optional = false; n.visit_mut_children_with(self); } From ff6aa78e76f26b009fdbf18dc4d66201f35743d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Tue, 30 Jul 2024 10:36:06 +0900 Subject: [PATCH 3/3] Create tall-cooks-speak.md --- .changeset/tall-cooks-speak.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/tall-cooks-speak.md diff --git a/.changeset/tall-cooks-speak.md b/.changeset/tall-cooks-speak.md new file mode 100644 index 000000000000..bc3b06eae02b --- /dev/null +++ b/.changeset/tall-cooks-speak.md @@ -0,0 +1,6 @@ +--- +swc_ecma_codegen: patch +swc_ecma_transforms_typescript: patch +--- + +fix(es/codegen): Emit question token for class methods