Commit 3a30f0fa50

Ian Johnson <ian@ianjohnson.dev>
2023-07-10 03:30:56
Sema: resolve field type layout for anon struct type info
Closes #16148
1 parent 82a9d5d
Changed files (2)
src
test
behavior
src/Sema.zig
@@ -17293,6 +17293,8 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
                                 } });
                             };
 
+                            try sema.resolveTypeLayout(field_ty.toType());
+
                             const is_comptime = field_val != .none;
                             const opt_default_val = if (is_comptime) field_val.toValue() else null;
                             const default_val_ptr = try sema.optRefValue(block, field_ty.toType(), opt_default_val);
test/behavior/struct.zig
@@ -1712,3 +1712,14 @@ test "extern struct field pointer has correct alignment" {
     try S.doTheTest();
     try comptime S.doTheTest();
 }
+
+test "packed struct field in anonymous struct" {
+    const T = packed struct {
+        f1: bool = false,
+    };
+
+    try std.testing.expect(countFields(.{ .t = T{} }) == 1);
+}
+fn countFields(v: anytype) usize {
+    return @typeInfo(@TypeOf(v)).Struct.fields.len;
+}