| ... | ... | @@ -29847,6 +29847,11 @@ fn resolveStructLayout(sema: *Sema, ty: Type) CompileError!void { |
| 29847 | 29847 | }, |
| 29848 | 29848 | .have_layout, .fully_resolved_wip, .fully_resolved => return, |
| 29849 | 29849 | } |
| 29850 | const prev_status = struct_obj.status; |
| 29851 | errdefer if (struct_obj.status == .layout_wip) { |
| 29852 | struct_obj.status = prev_status; |
| 29853 | }; |
| 29854 | |
| 29850 | 29855 | struct_obj.status = .layout_wip; |
| 29851 | 29856 | for (struct_obj.fields.values()) |field, i| { |
| 29852 | 29857 | sema.resolveTypeLayout(field.ty) catch |err| switch (err) { |
| ... | ... | @@ -30026,6 +30031,11 @@ fn resolveUnionLayout(sema: *Sema, ty: Type) CompileError!void { |
| 30026 | 30031 | }, |
| 30027 | 30032 | .have_layout, .fully_resolved_wip, .fully_resolved => return, |
| 30028 | 30033 | } |
| 30034 | const prev_status = union_obj.status; |
| 30035 | errdefer if (union_obj.status == .layout_wip) { |
| 30036 | union_obj.status = prev_status; |
| 30037 | }; |
| 30038 | |
| 30029 | 30039 | union_obj.status = .layout_wip; |
| 30030 | 30040 | for (union_obj.fields.values()) |field, i| { |
| 30031 | 30041 | sema.resolveTypeLayout(field.ty) catch |err| switch (err) { |