diff options
author | 2023-03-21 21:44:42 -0700 | |
---|---|---|
committer | 2023-03-21 21:44:42 -0700 | |
commit | 58a5c2a3aa3a3717b814366f088c249f7314820c (patch) | |
tree | e7c0f2ad958cd668dd4105b170829513cb7b6a65 /src | |
parent | f3a91339fcb818cf9b088759b680b7b5e0a5aa80 (diff) | |
download | bun-58a5c2a3aa3a3717b814366f088c249f7314820c.tar.gz bun-58a5c2a3aa3a3717b814366f088c249f7314820c.tar.zst bun-58a5c2a3aa3a3717b814366f088c249f7314820c.zip |
Fix possible crash with `export namespace ns { export class F {} }`
Diffstat (limited to 'src')
-rw-r--r-- | src/js_parser.zig | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/js_parser.zig b/src/js_parser.zig index bc9d4e157..45e0e8d72 100644 --- a/src/js_parser.zig +++ b/src/js_parser.zig @@ -16405,11 +16405,20 @@ fn NewParser_( // Handle exporting this class from a namespace if (was_export_inside_namespace) { - stmts.appendAssumeCapacity(Expr.assignStmt(p.newExpr(E.Dot{ - .target = p.newExpr(E.Identifier{ .ref = p.enclosing_namespace_arg_ref.? }, stmt.loc), - .name = p.symbols.items[data.class.class_name.?.ref.?.innerIndex()].original_name, - .name_loc = data.class.class_name.?.loc, - }, stmt.loc), p.newExpr(E.Identifier{ .ref = data.class.class_name.?.ref.? }, data.class.class_name.?.loc), p.allocator)); + stmts.append( + Stmt.assign( + p.newExpr( + E.Dot{ + .target = p.newExpr(E.Identifier{ .ref = p.enclosing_namespace_arg_ref.? }, stmt.loc), + .name = p.symbols.items[data.class.class_name.?.ref.?.innerIndex()].original_name, + .name_loc = data.class.class_name.?.loc, + }, + stmt.loc, + ), + p.newExpr(E.Identifier{ .ref = data.class.class_name.?.ref.? }, data.class.class_name.?.loc), + p.allocator, + ), + ) catch unreachable; } return; |