aboutsummaryrefslogtreecommitdiff
path: root/src/type.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2024-01-20 16:53:33 +0200
committerAndrew Kelley <andrew@ziglang.org>2024-01-20 12:21:05 -0800
commit2e7d28dd0d27d94945ac5f131d7f7b4e03bc0024 (patch)
treec931e6021a9cd6c1ba1423235476f5d420073d99 /src/type.zig
parent10aff6750275bda834579b0b2daef14287d50438 (diff)
downloadzig-2e7d28dd0d27d94945ac5f131d7f7b4e03bc0024.tar.gz
zig-2e7d28dd0d27d94945ac5f131d7f7b4e03bc0024.zip
Sema: replace uses of `toUnsignedInt` with `toUnsignedIntAdvanced`
During semantic analysis the value may be an unresolved lazy value which makes using `toUnsignedInt` invalid. Add assertions to detect similar issues in the future. Closes #18624
Diffstat (limited to 'src/type.zig')
-rw-r--r--src/type.zig12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/type.zig b/src/type.zig
index dbf73c0eb2..64a85aaa2d 100644
--- a/src/type.zig
+++ b/src/type.zig
@@ -1380,12 +1380,15 @@ pub const Type = struct {
},
.eager => {},
}
- return switch (struct_type.layout) {
- .Packed => .{
+ switch (struct_type.layout) {
+ .Packed => return .{
.scalar = Type.fromInterned(struct_type.backingIntType(ip).*).abiSize(mod),
},
- .Auto, .Extern => .{ .scalar = struct_type.size(ip).* },
- };
+ .Auto, .Extern => {
+ assert(struct_type.haveLayout(ip));
+ return .{ .scalar = struct_type.size(ip).* };
+ },
+ }
},
.anon_struct_type => |tuple| {
switch (strat) {
@@ -1411,6 +1414,7 @@ pub const Type = struct {
.eager => {},
}
+ assert(union_type.haveLayout(ip));
return .{ .scalar = union_type.size(ip).* };
},
.opaque_type => unreachable, // no size available