diff --git a/crates/swc_ecma_transforms_proposal/src/decorator_impl.rs b/crates/swc_ecma_transforms_proposal/src/decorator_impl.rs
index 235b046ba01c0..0c6cc2bb23ca0 100644
--- a/crates/swc_ecma_transforms_proposal/src/decorator_impl.rs
+++ b/crates/swc_ecma_transforms_proposal/src/decorator_impl.rs
@@ -1054,6 +1054,13 @@ impl VisitMut for DecoratorPass {
         self.state.extra_stmts = old_stmts;
     }
 
+    fn visit_mut_class_decl(&mut self, n: &mut ClassDecl) {
+        let old_class_name = self.state.class_name.take();
+        self.state.class_name = Some(n.ident.clone());
+        n.visit_mut_children_with(self);
+        self.state.class_name = old_class_name;
+    }
+
     fn visit_mut_class_member(&mut self, n: &mut ClassMember) {
         n.visit_mut_children_with(self);