commit 6ac2b3226fa8fb6d6cdf2ae3d59cdfe6d5b2b79c
parent 943c350baf98205945d065bb36f13418ad714d3b
Author: Ashymad <szymon.mikulicz@posteo.net>
Date: Tue, 9 Apr 2024 23:04:02 +0200
Init syntax
Diffstat:
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;