aboutsummaryrefslogtreecommitdiff
path: root/src/js_parser/js_parser.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/js_parser/js_parser.zig')
-rw-r--r--src/js_parser/js_parser.zig37
1 files changed, 36 insertions, 1 deletions
diff --git a/src/js_parser/js_parser.zig b/src/js_parser/js_parser.zig
index 215d6ba31..bee836910 100644
--- a/src/js_parser/js_parser.zig
+++ b/src/js_parser/js_parser.zig
@@ -4911,7 +4911,42 @@ pub fn NewParser(
}
try p.lexer.expectOrInsertSemicolon();
- return p.s(S.ExportDefault{ .default_name = createDefaultName(p, loc) catch unreachable, .value = js_ast.StmtOrExpr{ .expr = expr } }, loc);
+
+ // Use the expression name if present, since it's a better name
+ const default_name: js_ast.LocRef = default_name_getter: {
+ switch (expr.data) {
+ .e_function => |func_container| {
+ if (func_container.func.name) |_name| {
+ if (_name.ref) |ref| {
+ break :default_name_getter LocRef{ .loc = defaultLoc, .ref = ref };
+ }
+ } else {}
+ },
+ .e_identifier => |ident| {
+ break :default_name_getter LocRef{ .loc = defaultLoc, .ref = ident.ref };
+ },
+ .e_class => |class| {
+ if (class.class_name) |_name| {
+ if (_name.ref) |ref| {
+ break :default_name_getter LocRef{ .loc = defaultLoc, .ref = ref };
+ }
+ } else {}
+ },
+ else => {},
+ }
+
+ break :default_name_getter createDefaultName(p, defaultLoc) catch unreachable;
+ };
+
+ return p.s(
+ S.ExportDefault{
+ .default_name = default_name,
+ .value = js_ast.StmtOrExpr{
+ .expr = expr,
+ },
+ },
+ loc,
+ );
},
T.t_asterisk => {
if (!opts.is_module_scope and !(opts.is_namespace_scope or !opts.is_typescript_declare)) {