From a48aff64b4173671050a28f97e66a5eaac69fcde Mon Sep 17 00:00:00 2001 From: Benoit Giannangeli Date: Thu, 30 Jan 2025 16:28:38 +0100 Subject: [PATCH] feat: Maximum number of enum cases is now 16777215 instead of 255 --- src/Parser.zig | 2 +- src/obj.zig | 2 +- src/vm.zig | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Parser.zig b/src/Parser.zig index e0939f2c..9d5b3882 100644 --- a/src/Parser.zig +++ b/src/Parser.zig @@ -7306,7 +7306,7 @@ fn enumDeclaration(self: *Self) Error!Ast.Node.Index { var picked = std.ArrayList(bool).init(self.gc.allocator); var case_index: i32 = 0; while (!self.check(.RightBrace) and !self.check(.Eof)) : (case_index += 1) { - if (case_index > std.math.maxInt(u8)) { + if (case_index > std.math.maxInt(u24)) { self.reportError(.enum_cases_count, "Too many enum cases."); } diff --git a/src/obj.zig b/src/obj.zig index b9421367..4d7e9fe5 100644 --- a/src/obj.zig +++ b/src/obj.zig @@ -4208,7 +4208,7 @@ pub const ObjEnumInstance = struct { obj: Obj = .{ .obj_type = .EnumInstance }, enum_ref: *ObjEnum, - case: u8, + case: u24, pub fn mark(self: *Self, gc: *GarbageCollector) !void { try gc.markObj(self.enum_ref.toObj()); diff --git a/src/vm.zig b/src/vm.zig index 9d6e6efa..d3c447b1 100644 --- a/src/vm.zig +++ b/src/vm.zig @@ -2734,7 +2734,7 @@ pub const VM = struct { ObjEnumInstance, ObjEnumInstance{ .enum_ref = enum_, - .case = @intCast(arg), + .case = arg, }, ) catch { self.panic("Out of memory");