diff options
author | 2021-12-16 18:14:06 -0800 | |
---|---|---|
committer | 2021-12-16 18:14:06 -0800 | |
commit | 134748a2389e20559ae201d95aef0ecf7da5985a (patch) | |
tree | 4a818daec406642b25de470e3ba972a6d6950835 | |
parent | b57d890cbd64a2837f591666059621f317fc451a (diff) | |
download | bun-134748a2389e20559ae201d95aef0ecf7da5985a.tar.gz bun-134748a2389e20559ae201d95aef0ecf7da5985a.tar.zst bun-134748a2389e20559ae201d95aef0ecf7da5985a.zip |
[transpiler] Partially support top-level await in HMR
-rw-r--r-- | src/js_parser/js_parser.zig | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/src/js_parser/js_parser.zig b/src/js_parser/js_parser.zig index 356f040b2..18b3396d7 100644 --- a/src/js_parser/js_parser.zig +++ b/src/js_parser/js_parser.zig @@ -15145,6 +15145,8 @@ pub fn NewParser( toplevel_stmts_i += 1; + const is_async = !p.top_level_await_keyword.isEmpty(); + var func = p.e( E.Function{ .func = .{ @@ -15153,32 +15155,37 @@ pub fn NewParser( .open_parens_loc = logger.Loc.Empty, .flags = .{ .print_as_iife = true, + .is_async = is_async, }, }, }, logger.Loc.Empty, ); + const call_load = p.e( + E.Call{ + .target = Expr.assign( + p.e( + E.Dot{ + .name = "_load", + .target = hmr_module_ident, + .name_loc = logger.Loc.Empty, + }, + logger.Loc.Empty, + ), + func, + p.allocator, + ), + }, + logger.Loc.Empty, + ); // (__hmrModule._load = function())() toplevel_stmts[toplevel_stmts_i] = p.s( S.SExpr{ - .value = p.e( - E.Call{ - .target = Expr.assign( - p.e( - E.Dot{ - .name = "_load", - .target = hmr_module_ident, - .name_loc = logger.Loc.Empty, - }, - logger.Loc.Empty, - ), - func, - p.allocator, - ), - }, - logger.Loc.Empty, - ), + .value = if (is_async) + p.e(E.Await{ .value = call_load }, logger.Loc.Empty) + else + call_load, }, logger.Loc.Empty, ); |