diff --git a/src/browser/EventManager.zig b/src/browser/EventManager.zig index 2600e288..5f169514 100644 --- a/src/browser/EventManager.zig +++ b/src/browser/EventManager.zig @@ -157,7 +157,18 @@ pub fn remove(self: *EventManager, target: *EventTarget, typ: []const u8, callba } } -pub fn dispatch(self: *EventManager, target: *EventTarget, event: *Event) !void { +// Dispatching can be recursive from the compiler's point of view, so we need to +// give it an explicit error set so that other parts of the code can use and +// inferred error. +const DispatchError = error{ + OutOfMemory, + StringTooLarge, + JSExecCallback, + CompilationError, + ExecutionError, + JsException, +}; +pub fn dispatch(self: *EventManager, target: *EventTarget, event: *Event) DispatchError!void { if (comptime IS_DEBUG) { log.debug(.event, "eventManager.dispatch", .{ .type = event._type_string.str(), .bubbles = event._bubbles }); } diff --git a/src/browser/tests/element/html/input.html b/src/browser/tests/element/html/input.html index 2cc51a9f..01bfe214 100644 --- a/src/browser/tests/element/html/input.html +++ b/src/browser/tests/element/html/input.html @@ -183,6 +183,44 @@ } + +