@@ -34199,6 +34199,9 @@ pub fn resolveStructAlignment(
34199
34199
if (struct_type.assumePointerAlignedIfWip(ip, ptr_align)) return;
34200
34200
defer struct_type.clearAlignmentWip(ip);
34201
34201
34202
+ // No `zcu.trackUnitSema` calls, since this phase isn't really doing any semantic analysis.
34203
+ // It's just triggering *other* analysis, alongside a simple loop over already-resolved info.
34204
+
34202
34205
var alignment: Alignment = .@"1";
34203
34206
34204
34207
for (0..struct_type.field_types.len) |i| {
@@ -34229,6 +34232,9 @@ pub fn resolveStructLayout(sema: *Sema, ty: Type) SemaError!void {
34229
34232
34230
34233
try sema.resolveStructFieldTypes(ty.toIntern(), struct_type);
34231
34234
34235
+ // No `zcu.trackUnitSema` calls, since this phase isn't really doing any semantic analysis.
34236
+ // It's just triggering *other* analysis, alongside a simple loop over already-resolved info.
34237
+
34232
34238
if (struct_type.layout == .@"packed") {
34233
34239
sema.backingIntType(struct_type) catch |err| switch (err) {
34234
34240
error.OutOfMemory, error.AnalysisFail => |e| return e,
@@ -34532,6 +34538,9 @@ pub fn resolveUnionAlignment(
34532
34538
34533
34539
try sema.resolveUnionFieldTypes(ty, union_type);
34534
34540
34541
+ // No `zcu.trackUnitSema` calls, since this phase isn't really doing any semantic analysis.
34542
+ // It's just triggering *other* analysis, alongside a simple loop over already-resolved info.
34543
+
34535
34544
var max_align: Alignment = .@"1";
34536
34545
for (0..union_type.field_types.len) |field_index| {
34537
34546
const field_ty: Type = .fromInterned(union_type.field_types.get(ip)[field_index]);
@@ -34579,6 +34588,9 @@ pub fn resolveUnionLayout(sema: *Sema, ty: Type) SemaError!void {
34579
34588
34580
34589
union_type.setStatus(ip, .layout_wip);
34581
34590
34591
+ // No `zcu.trackUnitSema` calls, since this phase isn't really doing any semantic analysis.
34592
+ // It's just triggering *other* analysis, alongside a simple loop over already-resolved info.
34593
+
34582
34594
var max_size: u64 = 0;
34583
34595
var max_align: Alignment = .@"1";
34584
34596
for (0..union_type.field_types.len) |field_index| {
@@ -34695,6 +34707,9 @@ pub fn resolveStructFully(sema: *Sema, ty: Type) SemaError!void {
34695
34707
if (struct_type.setFullyResolved(ip)) return;
34696
34708
errdefer struct_type.clearFullyResolved(ip);
34697
34709
34710
+ // No `zcu.trackUnitSema` calls, since this phase isn't really doing any semantic analysis.
34711
+ // It's just triggering *other* analysis, alongside a simple loop over already-resolved info.
34712
+
34698
34713
// After we have resolve struct layout we have to go over the fields again to
34699
34714
// make sure pointer fields get their child types resolved as well.
34700
34715
// See also similar code for unions.
@@ -34720,6 +34735,9 @@ pub fn resolveUnionFully(sema: *Sema, ty: Type) SemaError!void {
34720
34735
.fully_resolved_wip, .fully_resolved => return,
34721
34736
}
34722
34737
34738
+ // No `zcu.trackUnitSema` calls, since this phase isn't really doing any semantic analysis.
34739
+ // It's just triggering *other* analysis, alongside a simple loop over already-resolved info.
34740
+
34723
34741
{
34724
34742
// After we have resolve union layout we have to go over the fields again to
34725
34743
// make sure pointer fields get their child types resolved as well.
@@ -34762,6 +34780,10 @@ pub fn resolveStructFieldTypes(
34762
34780
}
34763
34781
defer struct_type.clearFieldTypesWip(ip);
34764
34782
34783
+ // can't happen earlier than this because we only want the progress node if not already resolved
34784
+ const tracked_unit = zcu.trackUnitSema(struct_type.name.toSlice(ip), null);
34785
+ defer tracked_unit.end(zcu);
34786
+
34765
34787
sema.structFields(struct_type) catch |err| switch (err) {
34766
34788
error.AnalysisFail, error.OutOfMemory => |e| return e,
34767
34789
error.ComptimeBreak, error.ComptimeReturn => unreachable,
@@ -34791,6 +34813,10 @@ pub fn resolveStructFieldInits(sema: *Sema, ty: Type) SemaError!void {
34791
34813
}
34792
34814
defer struct_type.clearInitsWip(ip);
34793
34815
34816
+ // can't happen earlier than this because we only want the progress node if not already resolved
34817
+ const tracked_unit = zcu.trackUnitSema(struct_type.name.toSlice(ip), null);
34818
+ defer tracked_unit.end(zcu);
34819
+
34794
34820
sema.structFieldInits(struct_type) catch |err| switch (err) {
34795
34821
error.AnalysisFail, error.OutOfMemory => |e| return e,
34796
34822
error.ComptimeBreak, error.ComptimeReturn => unreachable,
@@ -34819,6 +34845,10 @@ pub fn resolveUnionFieldTypes(sema: *Sema, ty: Type, union_type: InternPool.Load
34819
34845
=> return,
34820
34846
}
34821
34847
34848
+ // can't happen earlier than this because we only want the progress node if not already resolved
34849
+ const tracked_unit = zcu.trackUnitSema(union_type.name.toSlice(ip), null);
34850
+ defer tracked_unit.end(zcu);
34851
+
34822
34852
union_type.setStatus(ip, .field_types_wip);
34823
34853
errdefer union_type.setStatus(ip, .none);
34824
34854
sema.unionFields(ty.toIntern(), union_type) catch |err| switch (err) {
0 commit comments