aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-04-17 01:18:05 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-04-17 01:18:05 -0700
commit07b4b4ced01a13073b41eea8e8a1fbae4a63d343 (patch)
tree0d4918f6f15768e657bc759dd0b28900b25d6589
parente624dd6d4dec1c717d2edfa49558c2a9fc0ef8fe (diff)
downloadbun-07b4b4ced01a13073b41eea8e8a1fbae4a63d343.tar.gz
bun-07b4b4ced01a13073b41eea8e8a1fbae4a63d343.tar.zst
bun-07b4b4ced01a13073b41eea8e8a1fbae4a63d343.zip
Don't record named exports for deoptimized CJS
-rw-r--r--src/js_parser.zig16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/js_parser.zig b/src/js_parser.zig
index 496e7116e..e443d30b2 100644
--- a/src/js_parser.zig
+++ b/src/js_parser.zig
@@ -3267,15 +3267,15 @@ pub const Parser = struct {
var exports_kind = js_ast.ExportsKind.none;
const exports_ref_usage_count = p.symbols.items[p.exports_ref.innerIndex()].use_count_estimate;
const uses_exports_ref = exports_ref_usage_count > 0;
- const uses_module_ref = p.symbols.items[p.module_ref.innerIndex()].use_count_estimate > 0;
-
- var wrapper_expr: ?Expr = null;
-
if (uses_exports_ref and p.commonjs_named_exports.count() > 0) {
p.deoptimizeCommonJSNamedExports();
}
- if (p.commonjs_named_exports_deoptimized and p.commonjs_named_exports.count() > 0) {
+ const uses_module_ref = p.symbols.items[p.module_ref.innerIndex()].use_count_estimate > 0;
+
+ var wrapper_expr: ?Expr = null;
+
+ if (p.isDeoptimizedCommonJS()) {
exports_kind = .cjs;
} else if (p.esm_export_keyword.len > 0 or p.top_level_await_keyword.len > 0) {
exports_kind = .esm;
@@ -5522,11 +5522,15 @@ fn NewParser_(
"Multiple exports with the same name \"{s}\"",
.{std.mem.trim(u8, alias, "\"'")},
);
- } else {
+ } else if (!p.isDeoptimizedCommonJS()) {
try p.named_exports.put(alias, js_ast.NamedExport{ .alias_loc = loc, .ref = ref });
}
}
+ fn isDeoptimizedCommonJS(p: *P) bool {
+ return p.commonjs_named_exports_deoptimized and p.commonjs_named_exports.count() > 0;
+ }
+
pub fn recordUsage(p: *P, ref: Ref) void {
if (p.is_revisit_for_substitution) return;
// The use count stored in the symbol is used for generating symbol names