aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-12-16 18:14:06 -0800
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-12-16 18:14:06 -0800
commit134748a2389e20559ae201d95aef0ecf7da5985a (patch)
tree4a818daec406642b25de470e3ba972a6d6950835
parentb57d890cbd64a2837f591666059621f317fc451a (diff)
downloadbun-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.zig41
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,
);