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 ==
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);
resolver.rejectError("Local.rejectPromise", kind);
resolver.rejectError("Local.rejectPromise", err);
return resolver.promise();
}

View File

@@ -20,7 +20,6 @@ const js = @import("js.zig");
const v8 = js.v8;
const log = @import("../../log.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`.
generic_error: []const u8,
range_error: []const u8,
reference_error: []const u8,
syntax_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_exception: struct { err: anyerror },
};
@@ -86,9 +81,9 @@ pub const RejectError = union(enum(u4)) {
pub fn rejectError(
self: PromiseResolver,
comptime source: []const u8,
comptime kind: RejectError,
err: RejectError,
) void {
const handle = switch (kind) {
const handle = switch (err) {
.generic_error => |msg| self.local.isolate.createError(msg),
.range_error => |msg| self.local.isolate.createRangeError(msg),
.reference_error => |msg| self.local.isolate.createReferenceError(msg),
@@ -101,7 +96,6 @@ pub fn rejectError(
};
return;
},
inline else => unreachable,
};
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 {
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 {