| ... | ... | @@ -780,6 +780,8 @@ ZigType *get_error_union_type(CodeGen *g, ZigType *err_set_type, ZigType *payloa |
| 780 | 780 | } |
| 781 | 781 | |
| 782 | 782 | ZigType *get_array_type(CodeGen *g, ZigType *child_type, uint64_t array_size, ZigValue *sentinel) { |
| 783 | Error err; |
| 784 | |
| 783 | 785 | TypeId type_id = {}; |
| 784 | 786 | type_id.id = ZigTypeIdArray; |
| 785 | 787 | type_id.data.array.codegen = g; |
| ... | ... | @@ -791,8 +793,9 @@ ZigType *get_array_type(CodeGen *g, ZigType *child_type, uint64_t array_size, Zi |
| 791 | 793 | return existing_entry->value; |
| 792 | 794 | } |
| 793 | 795 | |
| 794 | | Error err; |
| 795 | | if ((err = type_resolve(g, child_type, ResolveStatusSizeKnown))) { |
| 796 | size_t full_array_size = array_size + ((sentinel != nullptr) ? 1 : 0); |
| 797 | |
| 798 | if (full_array_size != 0 && (err = type_resolve(g, child_type, ResolveStatusSizeKnown))) { |
| 796 | 799 | codegen_report_errors_and_exit(g); |
| 797 | 800 | } |
| 798 | 801 | |
| ... | ... | @@ -806,9 +809,8 @@ ZigType *get_array_type(CodeGen *g, ZigType *child_type, uint64_t array_size, Zi |
| 806 | 809 | } |
| 807 | 810 | buf_appendf(&entry->name, "]%s", buf_ptr(&child_type->name)); |
| 808 | 811 | |
| 809 | | size_t full_array_size = array_size + ((sentinel != nullptr) ? 1 : 0); |
| 810 | 812 | entry->size_in_bits = child_type->size_in_bits * full_array_size; |
| 811 | | entry->abi_align = child_type->abi_align; |
| 813 | entry->abi_align = (full_array_size == 0) ? 0 : child_type->abi_align; |
| 812 | 814 | entry->abi_size = child_type->abi_size * full_array_size; |
| 813 | 815 | |
| 814 | 816 | entry->data.array.child_type = child_type; |