authorgravatar for jahe788@gmail.comIntegratedQuantum <jahe788@gmail.com> 2023-06-19 21:39:35+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2023-06-20 20:09:28-07:00
log3267eb3a28f6c747772a40beedac14f5feae814f
tree7efb8be32c6a30a214087faca4c6c1012bbeff95
parentb77679039fd40aa1693781f99ac89f2dc705e5c2

Fix @enumToInt and @tagName for auto-numbered enums with signed tag type.


2 files changed, 10 insertions(+), 1 deletions(-)

src/InternPool.zig+5-1
......@@ -448,7 +448,11 @@ pub const Key = union(enum) {
448448 if (x >= self.names.len) return null;
449449 return @intCast(u32, x);
450450 },
451 .i64, .big_int => return null, // out of range
451 .i64 => |x| {
452 if (x >= self.names.len or x < 0) return null;
453 return @intCast(u32, x);
454 },
455 .big_int => return null, // out of range
452456 .lazy_align, .lazy_size => unreachable,
453457 }
454458 }
test/behavior/enum.zig+5
......@@ -812,6 +812,11 @@ test "signed integer as enum tag" {
812812 try expect(@intFromEnum(SignedEnum.A2) == 1);
813813}
814814
815test "int to enum with signed tag type" {
816 const E = enum(i32) { a, b, c };
817 try expect(@intToEnum(E, 0) == .a);
818}
819
815820test "enum with one member and custom tag type" {
816821 const E = enum(u2) {
817822 One,