diff options
| author | mlugg <mlugg@mlugg.co.uk> | 2025-02-03 20:10:44 +0000 |
|---|---|---|
| committer | mlugg <mlugg@mlugg.co.uk> | 2025-02-04 16:20:29 +0000 |
| commit | d3ca10d5d8bc92280a14f9e40dc41d6accc1b4c2 (patch) | |
| tree | 20306667045b1136e12399d5fe13612925f0677c /src/Sema.zig | |
| parent | 3a4bb47fedbb890dc149622e31c75101b14c3b16 (diff) | |
| download | zig-d3ca10d5d8bc92280a14f9e40dc41d6accc1b4c2.tar.gz zig-d3ca10d5d8bc92280a14f9e40dc41d6accc1b4c2.zip | |
Zcu: remove `*_loaded` fields on `File`
Instead, `source`, `tree`, and `zir` should all be optional. This is
precisely what we're actually trying to model here; and `File` isn't
optimized for memory consumption or serializability anyway, so it's fine
to use a couple of extra bytes on actual optionals here.
Diffstat (limited to 'src/Sema.zig')
| -rw-r--r-- | src/Sema.zig | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index 5f4463a9d5..19252600f0 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -7649,9 +7649,8 @@ fn analyzeCall( const nav = ip.getNav(info.owner_nav); const resolved_func_inst = info.zir_body_inst.resolveFull(ip) orelse return error.AnalysisFail; const file = zcu.fileByIndex(resolved_func_inst.file); - assert(file.zir_loaded); - const zir_info = file.zir.getFnInfo(resolved_func_inst.inst); - break :b .{ nav, file.zir, info.zir_body_inst, resolved_func_inst.inst, zir_info }; + const zir_info = file.zir.?.getFnInfo(resolved_func_inst.inst); + break :b .{ nav, file.zir.?, info.zir_body_inst, resolved_func_inst.inst, zir_info }; } else .{ undefined, undefined, undefined, undefined, undefined }; // This is the `inst_map` used when evaluating generic parameters and return types. @@ -35328,7 +35327,7 @@ fn backingIntType( break :blk accumulator; }; - const zir = zcu.namespacePtr(struct_type.namespace).fileScope(zcu).zir; + const zir = zcu.namespacePtr(struct_type.namespace).fileScope(zcu).zir.?; const zir_index = struct_type.zir_index.resolve(ip) orelse return error.AnalysisFail; const extended = zir.instructions.items(.data)[@intFromEnum(zir_index)].extended; assert(extended.opcode == .struct_decl); @@ -35948,7 +35947,7 @@ fn structFields( const gpa = zcu.gpa; const ip = &zcu.intern_pool; const namespace_index = struct_type.namespace; - const zir = zcu.namespacePtr(namespace_index).fileScope(zcu).zir; + const zir = zcu.namespacePtr(namespace_index).fileScope(zcu).zir.?; const zir_index = struct_type.zir_index.resolve(ip) orelse return error.AnalysisFail; const fields_len, _, var extra_index = structZirInfo(zir, zir_index); @@ -36149,7 +36148,7 @@ fn structFieldInits( assert(!struct_type.haveFieldInits(ip)); const namespace_index = struct_type.namespace; - const zir = zcu.namespacePtr(namespace_index).fileScope(zcu).zir; + const zir = zcu.namespacePtr(namespace_index).fileScope(zcu).zir.?; const zir_index = struct_type.zir_index.resolve(ip) orelse return error.AnalysisFail; const fields_len, _, var extra_index = structZirInfo(zir, zir_index); @@ -36268,7 +36267,7 @@ fn unionFields( const zcu = pt.zcu; const gpa = zcu.gpa; const ip = &zcu.intern_pool; - const zir = zcu.namespacePtr(union_type.namespace).fileScope(zcu).zir; + const zir = zcu.namespacePtr(union_type.namespace).fileScope(zcu).zir.?; const zir_index = union_type.zir_index.resolve(ip) orelse return error.AnalysisFail; const extended = zir.instructions.items(.data)[@intFromEnum(zir_index)].extended; assert(extended.opcode == .union_decl); |
