about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/root.zig16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/root.zig b/src/root.zig
index 19d7bf5..57f99c0 100644
--- a/src/root.zig
+++ b/src/root.zig
@@ -109,12 +109,10 @@ fn getArg(T: type, argv: [*c]Value, n: i32) !T {
     };
 }
 
-fn raise(err: anyerror) Value {
-    const symb = janet.symbol("error", 5);
-    const fun = janet.resolveExt(root_env, symb).value;
+fn raise(err: anyerror) noreturn {
     const name = @errorName(err);
-    var msg: [*]u8 = @ptrCast(janet.smalloc(name.len * 2));
-    var n: u16 = 0;
+    var msg: [*:0]u8 = @ptrCast(janet.smalloc(name.len * 2));
+    var n: usize = 0;
     for (name) |char| {
         switch (char) {
             'A'...'Z' => if (n > 0) {
@@ -126,9 +124,11 @@ fn raise(err: anyerror) Value {
         msg[n] = toLower(char);
         n += 1;
     }
+    msg[n] = 0;
+    n += 1;
     msg = @ptrCast(janet.srealloc(msg, n));
-    var argv = [_]Value{ janet.wrapString(janet.string(msg, n)) };
-    return janet.call(janet.unwrapFunction(fun), argv.len, &argv);
+    janet.panic(msg);
+    unreachable;
 }
 
 pub fn wrapFn(f: anytype) Allocator.Error!janet.CFunction {
@@ -144,7 +144,7 @@ pub fn wrapFn(f: anytype) Allocator.Error!janet.CFunction {
                 inline for (&args, info.params, 0..) |*arg, param, i| {
                     const P = param.type.?;
                     arg.* = getArg(P, argv, i) catch |err|
-                        return raise(err);
+                        raise(err);
                 }
                 const result = @call(.auto, f, args);
                 return if (@typeInfo(@TypeOf(result)) != .error_union)