diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-03-08 22:19:25 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-03-08 22:19:25 -0700 |
| commit | bb73775d40e04796b0dd60341303d567db0a8020 (patch) | |
| tree | cef4e263687d31c5255d6a2c22fb0ed006d18972 /src/type.zig | |
| parent | 6f560c99094eec2210f2d76a2449b5f60191e11b (diff) | |
| download | zig-bb73775d40e04796b0dd60341303d567db0a8020.tar.gz zig-bb73775d40e04796b0dd60341303d567db0a8020.zip | |
Sema: implement coercion of tuples to structs
Diffstat (limited to 'src/type.zig')
| -rw-r--r-- | src/type.zig | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/type.zig b/src/type.zig index b6728b4be0..7b8dd1396b 100644 --- a/src/type.zig +++ b/src/type.zig @@ -4519,21 +4519,23 @@ pub const Type = extern union { if (field.is_comptime) { return field.default_val; } else { - return null; + return field.ty.onePossibleValue(); } }, .tuple => { - const val = ty.castTag(.tuple).?.data.values[index]; + const tuple = ty.castTag(.tuple).?.data; + const val = tuple.values[index]; if (val.tag() == .unreachable_value) { - return null; + return tuple.types[index].onePossibleValue(); } else { return val; } }, .anon_struct => { - const val = ty.castTag(.anon_struct).?.data.values[index]; + const anon_struct = ty.castTag(.anon_struct).?.data; + const val = anon_struct.values[index]; if (val.tag() == .unreachable_value) { - return null; + return anon_struct.types[index].onePossibleValue(); } else { return val; } |
