aboutsummaryrefslogtreecommitdiff
path: root/src/value.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-12-19 15:07:11 +0200
committerVeikka Tuominen <git@vexu.eu>2022-12-19 15:08:49 +0200
commit22d46e1d7753ea2a9accc180e8613206120739c5 (patch)
treea416ddd2e321e1012a624dd81a13b36804a34bf9 /src/value.zig
parent2926d95e6a7c4d83eb197f78de40718e97bc1f1b (diff)
downloadzig-22d46e1d7753ea2a9accc180e8613206120739c5.tar.gz
zig-22d46e1d7753ea2a9accc180e8613206120739c5.zip
value: use int tag type when querying for tag value
Closes #13757
Diffstat (limited to 'src/value.zig')
-rw-r--r--src/value.zig10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/value.zig b/src/value.zig
index 839b3d7580..96242331f9 100644
--- a/src/value.zig
+++ b/src/value.zig
@@ -1072,11 +1072,13 @@ pub const Value = extern union {
.enum_simple => Module.EnumFull.ValueMap{},
else => unreachable,
};
- break :field_index if (values.entries.len == 0)
+ if (values.entries.len == 0) {
// auto-numbered enum
- @intCast(u32, val.toUnsignedInt(mod.getTarget()))
- else
- @intCast(u32, values.getIndexContext(val, .{ .ty = ty, .mod = mod }).?);
+ break :field_index @intCast(u32, val.toUnsignedInt(mod.getTarget()));
+ }
+ var buffer: Type.Payload.Bits = undefined;
+ const int_tag_ty = ty.intTagType(&buffer);
+ break :field_index @intCast(u32, values.getIndexContext(val, .{ .ty = int_tag_ty, .mod = mod }).?);
},
};