aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-06-09 15:36:18 +0300
committerVeikka Tuominen <git@vexu.eu>2022-06-11 11:02:56 +0300
commit002df65b6ec55684d6bc6790ae7b0c0f4abb1375 (patch)
treece5687738de8b663c123a5d59b9d84e6f283758b /src/Sema.zig
parentc1eb6c30e84b0b161b634f7410088f44c80caa90 (diff)
downloadzig-002df65b6ec55684d6bc6790ae7b0c0f4abb1375.tar.gz
zig-002df65b6ec55684d6bc6790ae7b0c0f4abb1375.zip
Sema: handle tuple and anon_struct in resolveTypeFully
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 048a702e7b..fd127bc04a 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -23328,7 +23328,17 @@ pub fn resolveTypeFully(
const child_ty = try sema.resolveTypeFields(block, src, ty.childType());
return resolveTypeFully(sema, block, src, child_ty);
},
- .Struct => return resolveStructFully(sema, block, src, ty),
+ .Struct => switch (ty.tag()) {
+ .@"struct" => return resolveStructFully(sema, block, src, ty),
+ .tuple, .anon_struct => {
+ const tuple = ty.tupleFields();
+
+ for (tuple.types) |field_ty| {
+ try sema.resolveTypeFully(block, src, field_ty);
+ }
+ },
+ else => {},
+ },
.Union => return resolveUnionFully(sema, block, src, ty),
.Array => return resolveTypeFully(sema, block, src, ty.childType()),
.Optional => {
@@ -23363,7 +23373,7 @@ fn resolveStructFully(
try resolveStructLayout(sema, block, src, ty);
const resolved_ty = try sema.resolveTypeFields(block, src, ty);
- const payload = resolved_ty.castTag(.@"struct") orelse return;
+ const payload = resolved_ty.castTag(.@"struct").?;
const struct_obj = payload.data;
switch (struct_obj.status) {