| author | |
| committer | |
| log | 10617593f856cf0011926ea2a833d51f8d7c136d |
| tree | 326c4232276f0a1c77412037d87d6aadd8987c08 |
| parent | 10b1001a124101ea06e1f3027edde51b165ff21f |
Since the code is accessing the abi_size field compute the full type
size for both err_set_type and payload_type, not only for the latter.3 files changed, 16 insertions(+), 1 deletions(-)
src/stage1/analyze.cpp+7-1| ... | ... | @@ -745,8 +745,14 @@ ZigType *get_error_union_type(CodeGen *g, ZigType *err_set_type, ZigType *payloa |
| 745 | 745 | return existing_entry->value; |
| 746 | 746 | } |
| 747 | 747 | |
| 748 | Error err; | |
| 749 | if ((err = type_resolve(g, err_set_type, ResolveStatusSizeKnown))) | |
| 750 | return g->builtin_types.entry_invalid; | |
| 751 | ||
| 752 | if ((err = type_resolve(g, payload_type, ResolveStatusSizeKnown))) | |
| 753 | return g->builtin_types.entry_invalid; | |
| 754 | ||
| 748 | 755 | ZigType *entry = new_type_table_entry(ZigTypeIdErrorUnion); |
| 749 | assert(type_is_resolved(payload_type, ResolveStatusSizeKnown)); | |
| 750 | 756 | |
| 751 | 757 | buf_resize(&entry->name, 0); |
| 752 | 758 | buf_appendf(&entry->name, "%s!%s", buf_ptr(&err_set_type->name), buf_ptr(&payload_type->name)); |
test/stage1/behavior.zig+1| ... | ... | @@ -58,6 +58,7 @@ comptime { |
| 58 | 58 | _ = @import("behavior/bugs/6850.zig"); |
| 59 | 59 | _ = @import("behavior/bugs/7027.zig"); |
| 60 | 60 | _ = @import("behavior/bugs/7047.zig"); |
| 61 | _ = @import("behavior/bugs/7003.zig"); | |
| 61 | 62 | _ = @import("behavior/bugs/394.zig"); |
| 62 | 63 | _ = @import("behavior/bugs/421.zig"); |
| 63 | 64 | _ = @import("behavior/bugs/529.zig"); |
test/stage1/behavior/bugs/7003.zig created+8| ... | ... | @@ -0,0 +1,8 @@ |
| 1 | test "@Type should resolve its children types" { | |
| 2 | const sparse = enum(u2) { a, b, c }; | |
| 3 | const dense = enum(u2) { a, b, c, d }; | |
| 4 | ||
| 5 | comptime var sparse_info = @typeInfo(anyerror!sparse); | |
| 6 | sparse_info.ErrorUnion.payload = dense; | |
| 7 | const B = @Type(sparse_info); | |
| 8 | } |