Skip to content

Commit

Permalink
fix(es/decorator): Support for legacy decorators in class expressions…
Browse files Browse the repository at this point in the history
… implemented
  • Loading branch information
magic-akari committed Apr 25, 2024
1 parent 016fe14 commit 2b0fc33
Showing 1 changed file with 13 additions and 5 deletions.
18 changes: 13 additions & 5 deletions crates/swc_ecma_transforms_proposal/src/decorators/legacy/mod.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::mem;
use std::{iter, mem};

use swc_atoms::JsWord;
use swc_common::{collections::AHashMap, util::take::Take, DUMMY_SP};
Expand Down Expand Up @@ -268,7 +268,9 @@ impl VisitMut for TscDecorator {
}

fn visit_mut_expr(&mut self, e: &mut Expr) {
let appended_exprs = mem::take(&mut self.appended_exprs);
e.visit_mut_children_with(self);
let appended_exprs = mem::replace(&mut self.appended_exprs, appended_exprs);

if let Some(var_name) = self.assign_class_expr_to.take() {
self.vars.push(VarDeclarator {
Expand All @@ -278,11 +280,17 @@ impl VisitMut for TscDecorator {
definite: Default::default(),
});

*e = Expr::Assign(AssignExpr {
*e = Expr::Seq(SeqExpr {
span: DUMMY_SP,
op: op!("="),
left: var_name.into(),
right: Box::new(e.take()),
exprs: iter::once(AssignExpr {
span: DUMMY_SP,
op: op!("="),
left: var_name.into(),
right: Box::new(e.take()),
})
.map(Into::into)
.chain(appended_exprs.into_iter())
.collect(),
});
}
}
Expand Down

0 comments on commit 2b0fc33

Please sign in to comment.