diff --git a/.changeset/modern-bears-flash.md b/.changeset/modern-bears-flash.md new file mode 100644 index 000000000000..f2d40c1f2434 --- /dev/null +++ b/.changeset/modern-bears-flash.md @@ -0,0 +1,5 @@ +--- +swc_ecma_codegen: patch +--- + +fix(es/codegen): Print the missing `abstract` in class expression diff --git a/crates/swc_ecma_codegen/src/lib.rs b/crates/swc_ecma_codegen/src/lib.rs index f2901a69464a..6ec6d4af5a39 100644 --- a/crates/swc_ecma_codegen/src/lib.rs +++ b/crates/swc_ecma_codegen/src/lib.rs @@ -1342,6 +1342,11 @@ where emit!(dec); } + if node.class.is_abstract { + keyword!("abstract"); + space!(); + } + keyword!("class"); if let Some(ref i) = node.ident { diff --git a/crates/swc_ecma_codegen/tests/fixture/typescript/class_abstract/input.ts b/crates/swc_ecma_codegen/tests/fixture/typescript/class_abstract/input.ts new file mode 100644 index 000000000000..b74f71b0da55 --- /dev/null +++ b/crates/swc_ecma_codegen/tests/fixture/typescript/class_abstract/input.ts @@ -0,0 +1,7 @@ +export default abstract class Predictor { + abstract _type: string; +} + +export abstract class Foo { + abstract _type: string; +} diff --git a/crates/swc_ecma_codegen/tests/fixture/typescript/class_abstract/output.ts b/crates/swc_ecma_codegen/tests/fixture/typescript/class_abstract/output.ts new file mode 100644 index 000000000000..f62d5fa2dd9a --- /dev/null +++ b/crates/swc_ecma_codegen/tests/fixture/typescript/class_abstract/output.ts @@ -0,0 +1,6 @@ +export default abstract class Predictor { + abstract _type: string; +} +export abstract class Foo { + abstract _type: string; +}