From 8b0182f03cc39a025849fb6a59895e83ec1c3342 Mon Sep 17 00:00:00 2001 From: kayomn Date: Sun, 5 Nov 2023 16:06:26 +0000 Subject: [PATCH] add dynamic to_string support to dynamic object typeinfo --- source/ona/kym.zig | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/source/ona/kym.zig b/source/ona/kym.zig index 5004f9c..880617d 100644 --- a/source/ona/kym.zig +++ b/source/ona/kym.zig @@ -683,8 +683,8 @@ pub const RuntimeEnv = struct { break: convert self.new_string(string[0 .. length.?]); }, - .syscall => self.new_string(""), - .dynamic => self.new_string(""), + .syscall => self.new_string("syscall"), + .dynamic => |dynamic| dynamic.typeinfo().to_string(self, dynamic.userdata()), }; } @@ -957,6 +957,7 @@ pub const Typeinfo = struct { name: []const coral.io.Byte, size: usize, destruct: ?*const fn (env: *RuntimeEnv, userdata: []coral.io.Byte) void = null, + to_string: *const fn (env: *RuntimeEnv, userdata: []coral.io.Byte) RuntimeError!*RuntimeRef = default_to_string, call: *const fn (env: *RuntimeEnv, userdata: []coral.io.Byte, frame: Frame) RuntimeError!?*RuntimeRef = default_call, get: *const fn (env: *RuntimeEnv, userdata: []coral.io.Byte, index: *const RuntimeRef) RuntimeError!?*RuntimeRef = default_get, set: *const fn (env: *RuntimeEnv, userdata: []coral.io.Byte, value: *const RuntimeRef, value: ?*const RuntimeRef) RuntimeError!void = default_set, @@ -972,6 +973,10 @@ pub const Typeinfo = struct { fn default_set(env: *RuntimeEnv, _: []coral.io.Byte, _: *const RuntimeRef, _: ?*const RuntimeRef) RuntimeError!void { return env.raise(error.BadOperation, "this dynamic object is not set-indexable", .{}); } + + fn default_to_string(env: *RuntimeEnv, _: []coral.io.Byte) RuntimeError!*RuntimeRef { + return env.raise(error.BadOperation, "this dynamic object is not stringable", .{}); + } }; pub fn assert(env: *RuntimeEnv, condition: bool) RuntimeError!void {