aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2023-07-08 17:41:24 -0700
committerGravatar GitHub <noreply@github.com> 2023-07-08 17:41:24 -0700
commit59570fe237f91dd04ce8f37779902cffa4352010 (patch)
tree05db3a38804a141296eca211ea42aeb7dbd0aa82 /src
parentaa8b832ef61ada31176d248e716074ff22bb9dee (diff)
downloadbun-59570fe237f91dd04ce8f37779902cffa4352010.tar.gz
bun-59570fe237f91dd04ce8f37779902cffa4352010.tar.zst
bun-59570fe237f91dd04ce8f37779902cffa4352010.zip
Handle case with TS decorators and export default anonymous class (#3578)
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'src')
-rw-r--r--src/js_parser.zig12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/js_parser.zig b/src/js_parser.zig
index df5c84294..3c706b1bb 100644
--- a/src/js_parser.zig
+++ b/src/js_parser.zig
@@ -18146,10 +18146,20 @@ fn NewParser_(
data.default_name = createDefaultName(p, stmt.loc) catch unreachable;
}
+ // We only inject a name into classes when there is a decorator
+ if (class.class.has_decorators) {
+ if (class.class.class_name == null or
+ class.class.class_name.?.ref == null)
+ {
+ class.class.class_name = data.default_name;
+ }
+ }
+
+ // This is to handle TS decorators, mostly.
var class_stmts = p.lowerClass(.{ .stmt = s2 });
+ std.debug.assert(class_stmts[0].data == .s_class);
if (class_stmts.len > 1) {
- std.debug.assert(class_stmts[0].data == .s_class);
data.value.stmt = class_stmts[0];
stmts.append(stmt.*) catch {};
stmts.appendSlice(class_stmts[1..]) catch {};