give up on switch (comptime kind), prefer union(enum)

This commit is contained in:
Halil Durak
2026-03-20 13:35:12 +03:00
parent 94190f93af
commit de28d14aff
3 changed files with 6 additions and 12 deletions

View File

@@ -1206,9 +1206,9 @@ pub fn stackTrace(self: *const Local) !?[]const u8 {
} }
// == Promise Helpers == // == Promise Helpers ==
pub fn rejectPromise(self: *const Local, comptime kind: js.PromiseResolver.RejectError) js.Promise { pub fn rejectPromise(self: *const Local, err: js.PromiseResolver.RejectError) js.Promise {
var resolver = js.PromiseResolver.init(self); var resolver = js.PromiseResolver.init(self);
resolver.rejectError("Local.rejectPromise", kind); resolver.rejectError("Local.rejectPromise", err);
return resolver.promise(); return resolver.promise();
} }

View File

@@ -20,7 +20,6 @@ const js = @import("js.zig");
const v8 = js.v8; const v8 = js.v8;
const log = @import("../../log.zig"); const log = @import("../../log.zig");
const DOMException = @import("../webapi/DOMException.zig");
const DOMException = @import("../webapi/DOMException.zig"); const DOMException = @import("../webapi/DOMException.zig");
@@ -67,17 +66,13 @@ pub fn reject(self: PromiseResolver, comptime source: []const u8, value: anytype
}; };
} }
pub const RejectError = union(enum(u4)) { pub const RejectError = union(enum) {
/// Not to be confused with `DOMException`; this is bare `Error`. /// Not to be confused with `DOMException`; this is bare `Error`.
generic_error: []const u8, generic_error: []const u8,
range_error: []const u8, range_error: []const u8,
reference_error: []const u8, reference_error: []const u8,
syntax_error: []const u8, syntax_error: []const u8,
type_error: []const u8, type_error: []const u8,
wasm_compile_error: void, // TODO.
wasm_link_error: void, // TODO.
wasm_runtime_error: void, // TODO.
wasm_suspend_error: void, // TODO.
/// DOM exceptions are unknown to V8, belongs to web standards. /// DOM exceptions are unknown to V8, belongs to web standards.
dom_exception: struct { err: anyerror }, dom_exception: struct { err: anyerror },
}; };
@@ -86,9 +81,9 @@ pub const RejectError = union(enum(u4)) {
pub fn rejectError( pub fn rejectError(
self: PromiseResolver, self: PromiseResolver,
comptime source: []const u8, comptime source: []const u8,
comptime kind: RejectError, err: RejectError,
) void { ) void {
const handle = switch (kind) { const handle = switch (err) {
.generic_error => |msg| self.local.isolate.createError(msg), .generic_error => |msg| self.local.isolate.createError(msg),
.range_error => |msg| self.local.isolate.createRangeError(msg), .range_error => |msg| self.local.isolate.createRangeError(msg),
.reference_error => |msg| self.local.isolate.createReferenceError(msg), .reference_error => |msg| self.local.isolate.createReferenceError(msg),
@@ -101,7 +96,6 @@ pub fn rejectError(
}; };
return; return;
}, },
inline else => unreachable,
}; };
self._reject(js.Value{ .handle = handle, .local = self.local }) catch |reject_err| { self._reject(js.Value{ .handle = handle, .local = self.local }) catch |reject_err| {

View File

@@ -73,7 +73,7 @@ pub fn getStorage(self: *Navigator) *StorageManager {
pub fn getBattery(_: *const Navigator, page: *Page) !js.Promise { pub fn getBattery(_: *const Navigator, page: *Page) !js.Promise {
log.info(.not_implemented, "navigator.getBattery", .{}); log.info(.not_implemented, "navigator.getBattery", .{});
return page.js.local.?.rejectErrorPromise(.{ .dom_exception = error.NotSupported }); return page.js.local.?.rejectErrorPromise(.{ .dom_exception = .{ .err = error.NotSupported } });
} }
pub fn registerProtocolHandler(_: *const Navigator, scheme: []const u8, url: [:0]const u8, page: *const Page) !void { pub fn registerProtocolHandler(_: *const Navigator, scheme: []const u8, url: [:0]const u8, page: *const Page) !void {