aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-11-22 01:19:50 +0200
committerVeikka Tuominen <git@vexu.eu>2022-11-23 12:13:39 +0200
commitd5da2a6114926fae44f31eeab0706578f090dca8 (patch)
treeb2a561651f35aae2dd934f43690e0311c95db0c6 /src/Module.zig
parent80575face7a3b1e0f47e413507a6fa8b1d002e57 (diff)
downloadzig-d5da2a6114926fae44f31eeab0706578f090dca8.tar.gz
zig-d5da2a6114926fae44f31eeab0706578f090dca8.zip
Sema: implement tuple declarations
Diffstat (limited to 'src/Module.zig')
-rw-r--r--src/Module.zig5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/Module.zig b/src/Module.zig
index 8ea49f13b3..bb03616dff 100644
--- a/src/Module.zig
+++ b/src/Module.zig
@@ -938,6 +938,7 @@ pub const Struct = struct {
known_non_opv: bool,
requires_comptime: PropertyBoolean = .unknown,
have_field_inits: bool = false,
+ is_tuple: bool,
pub const Fields = std.StringArrayHashMapUnmanaged(Field);
@@ -4458,6 +4459,7 @@ pub fn semaFile(mod: *Module, file: *File) SemaError!void {
.layout = .Auto,
.status = .none,
.known_non_opv = undefined,
+ .is_tuple = undefined, // set below
.namespace = .{
.parent = null,
.ty = struct_ty,
@@ -4489,6 +4491,9 @@ pub fn semaFile(mod: *Module, file: *File) SemaError!void {
assert(file.zir_loaded);
const main_struct_inst = Zir.main_struct_inst;
struct_obj.zir_index = main_struct_inst;
+ const extended = file.zir.instructions.items(.data)[main_struct_inst].extended;
+ const small = @bitCast(Zir.Inst.StructDecl.Small, extended.small);
+ struct_obj.is_tuple = small.is_tuple;
var sema_arena = std.heap.ArenaAllocator.init(gpa);
defer sema_arena.deinit();