aboutsummaryrefslogtreecommitdiff
path: root/src/type.zig
diff options
context:
space:
mode:
authorSuperAuguste <19855629+SuperAuguste@users.noreply.github.com>2023-12-10 05:10:58 -0500
committerAndrew Kelley <andrew@ziglang.org>2024-01-29 13:09:17 -0800
commita479fd313248a55273a17de5f9af6b82abdb0be4 (patch)
treebef7ec6d1fd27407f18f19f3dde973ff639da507 /src/type.zig
parentf4f8036ec048daa072c7caa72edd320c85bf426c (diff)
downloadzig-a479fd313248a55273a17de5f9af6b82abdb0be4.tar.gz
zig-a479fd313248a55273a17de5f9af6b82abdb0be4.zip
Fix some comptime packed struct issues
Co-authored-by: Veikka Tuominen <git@vexu.eu>
Diffstat (limited to 'src/type.zig')
-rw-r--r--src/type.zig8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/type.zig b/src/type.zig
index 64a85aaa2d..067deecfea 100644
--- a/src/type.zig
+++ b/src/type.zig
@@ -1607,8 +1607,12 @@ pub const Type = struct {
.type_info => unreachable,
},
.struct_type => |struct_type| {
- if (struct_type.layout == .Packed) {
- if (opt_sema) |sema| try sema.resolveTypeLayout(ty);
+ const is_packed = struct_type.layout == .Packed;
+ if (opt_sema) |sema| {
+ try sema.resolveTypeFields(ty);
+ if (is_packed) try sema.resolveTypeLayout(ty);
+ }
+ if (is_packed) {
return try Type.fromInterned(struct_type.backingIntType(ip).*).bitSizeAdvanced(mod, opt_sema);
}
return (try ty.abiSizeAdvanced(mod, strat)).scalar * 8;