fix(codegen): print export @decorator declare abstract class Foo correctly (#5303)

This commit is contained in:
Boshen 2024-08-28 15:30:38 +00:00
parent 6633972663
commit 5c4c00123d
3 changed files with 10 additions and 6 deletions

View file

@ -2158,16 +2158,16 @@ impl<'a> Gen for MetaProperty<'a> {
impl<'a> Gen for Class<'a> {
fn gen(&self, p: &mut Codegen, ctx: Context) {
p.add_source_mapping(self.span.start);
if self.declare {
p.print_str("declare ");
}
if self.r#abstract {
p.print_str("abstract ");
}
let n = p.code_len();
let wrap = self.is_expression() && (p.start_of_stmt == n || p.start_of_default_export == n);
p.wrap(wrap, |p| {
self.decorators.gen(p, ctx);
if self.declare {
p.print_str("declare ");
}
if self.r#abstract {
p.print_str("abstract ");
}
p.print_str("class");
if let Some(id) = &self.id {
p.print_hard_space();

View file

@ -106,3 +106,6 @@ c = foo<string>;
d = x satisfies y;
d = ((x) satisfies y);
export @x declare abstract class C {}
export @x declare abstract class C {}

View file

@ -50,6 +50,7 @@ fn ts() {
"b = (x as y);",
"c = foo<string>;",
"d = x satisfies y;",
"export @x declare abstract class C {}",
];
let snapshot = cases.into_iter().fold(String::new(), |mut w, case| {