aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/base.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/base.zig')
-rw-r--r--src/bun.js/base.zig28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/bun.js/base.zig b/src/bun.js/base.zig
index 427def275..de02c1cbf 100644
--- a/src/bun.js/base.zig
+++ b/src/bun.js/base.zig
@@ -1568,13 +1568,21 @@ pub fn JSError(
) void {
@setCold(true);
+ exception.* = createError(ctx, fmt, args).asObjectRef();
+}
+
+pub fn createError(
+ globalThis: *JSC.JSGlobalObject,
+ comptime fmt: string,
+ args: anytype,
+) JSC.JSValue {
if (comptime std.meta.fields(@TypeOf(args)).len == 0) {
var zig_str = JSC.ZigString.init(fmt);
if (comptime !strings.isAllASCIISimple(fmt)) {
zig_str.markUTF16();
}
- exception.* = zig_str.toErrorInstance(ctx).asObjectRef();
+ return zig_str.toErrorInstance(globalThis);
} else {
var fallback = std.heap.stackFallback(256, default_allocator);
var allocator = fallback.get();
@@ -1583,8 +1591,9 @@ pub fn JSError(
var zig_str = JSC.ZigString.init(buf);
zig_str.detectEncoding();
// it alwayas clones
- exception.* = zig_str.toErrorInstance(ctx).asObjectRef();
+ const res = zig_str.toErrorInstance(globalThis);
allocator.free(buf);
+ return res;
}
}
@@ -1598,8 +1607,8 @@ pub fn throwTypeError(
exception.* = toTypeError(code, fmt, args, ctx).asObjectRef();
}
-pub fn toTypeError(
- code: JSC.Node.ErrorCode,
+pub fn toTypeErrorWithCode(
+ code: []const u8,
comptime fmt: string,
args: anytype,
ctx: js.JSContextRef,
@@ -1615,10 +1624,19 @@ pub fn toTypeError(
zig_str.detectEncoding();
zig_str.mark();
}
- const code_str = ZigString.init(@tagName(code));
+ const code_str = ZigString.init(code);
return JSC.JSValue.createTypeError(&zig_str, &code_str, ctx.ptr());
}
+pub fn toTypeError(
+ code: JSC.Node.ErrorCode,
+ comptime fmt: string,
+ args: anytype,
+ ctx: js.JSContextRef,
+) JSC.JSValue {
+ return toTypeErrorWithCode(std.mem.span(@tagName(code)), fmt, args, ctx);
+}
+
pub fn throwInvalidArguments(
comptime fmt: string,
args: anytype,