DzLox

:)
git clone https://git.sr.ht/~ashymad/DzLox
Log | Files | Refs | Submodules | LICENSE

commit 6ac2b3226fa8fb6d6cdf2ae3d59cdfe6d5b2b79c
parent 943c350baf98205945d065bb36f13418ad714d3b
Author: Ashymad <szymon.mikulicz@posteo.net>
Date:   Tue,  9 Apr 2024 23:04:02 +0200

Init syntax

Diffstat:
Mzlox/src/compiler.zig | 2+-
Mzlox/src/table.zig | 8+++++---
Mzlox/src/vm_callbacks.zig | 2+-
3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/zlox/src/compiler.zig b/zlox/src/compiler.zig @@ -248,7 +248,7 @@ pub const Compiler = struct { } fn string(self: *@This()) void { - self.emitConstant(Value.init(self.objects.emplace(.String, &[_][]const u8{self.previous.lexeme[1 .. self.previous.lexeme.len - 1]}) catch |err| { + self.emitConstant(Value.init(self.objects.emplace(.String, &.{self.previous.lexeme[1 .. self.previous.lexeme.len - 1]}) catch |err| { self.lastError = err; self.errorAtPrevious("Couldn't allocate object"); return; diff --git a/zlox/src/table.zig b/zlox/src/table.zig @@ -50,15 +50,17 @@ pub fn Table(K: type, V: type, hash_fn: fn (K) u32, cmp_fn: fn (K, K) bool) type self.allocator.free(self.entries); self.entries = entries; } - const find_check = struct { + pub fn find_check(key: K) struct { k: K, pub fn check(self: *const @This(), k2: K) bool { return cmp_fn(self.k, k2); } - }; + } { + return @TypeOf(find_check(key)){ .k = key }; + } pub fn find(entries: []Entry, key: K) *Entry { - return find_(entries, hash_fn(key), find_check{ .k = key }); + return find_(entries, hash_fn(key), find_check(key)); } pub fn find_(entries: []Entry, hash: u32, check: anytype) *Entry { diff --git a/zlox/src/vm_callbacks.zig b/zlox/src/vm_callbacks.zig @@ -27,7 +27,7 @@ pub fn concatenate(objects: *Obj.List) Type(Obj.Type.String, Obj.Type.String) { const Ret = Type(Obj.Type.String, Obj.Type.String); const ret = Ret{ .objects = objects, ._call = struct { pub fn concatenate(self: *const Ret, lhs: *Obj, rhs: *Obj) Error!*Obj { - return try self.objects.emplace(.String, &[_][]const u8{ (lhs.cast(.String) catch unreachable).slice(), (rhs.cast(.String) catch unreachable).slice() }); + return try self.objects.emplace(.String, &.{ (lhs.cast(.String) catch unreachable).slice(), (rhs.cast(.String) catch unreachable).slice() }); } }.concatenate }; return ret;