aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
authormlugg <mlugg@mlugg.co.uk>2025-02-03 20:10:44 +0000
committermlugg <mlugg@mlugg.co.uk>2025-02-04 16:20:29 +0000
commitd3ca10d5d8bc92280a14f9e40dc41d6accc1b4c2 (patch)
tree20306667045b1136e12399d5fe13612925f0677c /src/Sema.zig
parent3a4bb47fedbb890dc149622e31c75101b14c3b16 (diff)
downloadzig-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.zig13
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);