aboutsummaryrefslogtreecommitdiff
path: root/src/js_ast.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-04-16 22:20:22 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-04-16 22:20:22 -0700
commiteec1a07907129cb0e5996985207175472e049a5e (patch)
tree4b812dbc07b7b590935b24d1e07426933dd1f8d8 /src/js_ast.zig
parent30b0d006fe581673bc601a8f32d5ab891b9c5509 (diff)
downloadbun-eec1a07907129cb0e5996985207175472e049a5e.tar.gz
bun-eec1a07907129cb0e5996985207175472e049a5e.tar.zst
bun-eec1a07907129cb0e5996985207175472e049a5e.zip
Attempt to automatically handle some cyclical import issues with ESM
Fixes https://github.com/kysely-org/kysely/issues/412
Diffstat (limited to 'src/js_ast.zig')
-rw-r--r--src/js_ast.zig15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/js_ast.zig b/src/js_ast.zig
index 9173ce6eb..5c95b8f5e 100644
--- a/src/js_ast.zig
+++ b/src/js_ast.zig
@@ -4949,6 +4949,21 @@ pub const S = struct {
pub const ExportDefault = struct {
default_name: LocRef, // value may be a SFunction or SClass
value: StmtOrExpr,
+
+ pub fn canBeMovedAround(self: ExportDefault) bool {
+ return switch (self.value) {
+ .expr => |e| switch (e.data) {
+ .e_class => |class| class.extends == null,
+ .e_arrow, .e_function => true,
+ else => e.canBeConstValue(),
+ },
+ .stmt => |s| switch (s.data) {
+ .s_class => |class| class.class.extends == null,
+ .s_function => true,
+ else => false,
+ },
+ };
+ }
};
pub const Enum = struct {