diff options
| author | Veikka Tuominen <git@vexu.eu> | 2024-01-20 16:53:33 +0200 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2024-01-20 12:21:05 -0800 |
| commit | 2e7d28dd0d27d94945ac5f131d7f7b4e03bc0024 (patch) | |
| tree | c931e6021a9cd6c1ba1423235476f5d420073d99 /src/type.zig | |
| parent | 10aff6750275bda834579b0b2daef14287d50438 (diff) | |
| download | zig-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.zig | 12 |
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 |
