diff options
Diffstat (limited to 'src/bun.js/bindings/bindings.zig')
-rw-r--r-- | src/bun.js/bindings/bindings.zig | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/bun.js/bindings/bindings.zig b/src/bun.js/bindings/bindings.zig index 942d4b4f1..d11e30498 100644 --- a/src/bun.js/bindings/bindings.zig +++ b/src/bun.js/bindings/bindings.zig @@ -2030,7 +2030,7 @@ pub const JSGlobalObject = extern struct { } pub fn createErrorInstance(this: *JSGlobalObject, comptime fmt: string, args: anytype) JSValue { - if (comptime std.meta.fieldNames(@TypeOf(args)).len > 0) { + if (comptime std.meta.fields(@TypeOf(args)).len > 0) { var stack_fallback = std.heap.stackFallback(1024 * 4, this.allocator()); var buf = bun.MutableString.init2048(stack_fallback.get()) catch unreachable; defer buf.deinit(); @@ -2077,11 +2077,19 @@ pub const JSGlobalObject = extern struct { err: anyerror, comptime fmt: string, ) void { - var str = ZigString.init(std.fmt.allocPrint(this.bunVM().allocator, "{s} " ++ fmt, .{@errorName(err)}) catch return); + this.vm().throwError(this, this.createError(err, fmt)); + } + + pub fn createError( + this: *JSGlobalObject, + err: anyerror, + comptime fmt: string, + ) JSValue { + var str = ZigString.init(std.fmt.allocPrint(this.bunVM().allocator, "{s} " ++ fmt, .{@errorName(err)}) catch return ZigString.static("error").toErrorInstance(this)); str.markUTF8(); - var err_value = str.toErrorInstance(this); - this.vm().throwError(this, err_value); + const instance = str.toErrorInstance(this); this.bunVM().allocator.free(ZigString.untagged(str.ptr)[0..str.len]); + return instance; } pub fn handleError( |