| ... | ... | @@ -6460,6 +6460,9 @@ static TypeTableEntry *ir_resolve_peer_types(IrAnalyze *ira, AstNode *source_nod |
| 6460 | 6460 | prev_inst = cur_inst; |
| 6461 | 6461 | continue; |
| 6462 | 6462 | } else if (cur_type->id == TypeTableEntryIdPureError) { |
| 6463 | if (prev_type->id == TypeTableEntryIdArray) { |
| 6464 | convert_to_const_slice = true; |
| 6465 | } |
| 6463 | 6466 | any_are_pure_error = true; |
| 6464 | 6467 | continue; |
| 6465 | 6468 | } else if (cur_type->id == TypeTableEntryIdNullLit) { |
| ... | ... | @@ -6568,7 +6571,12 @@ static TypeTableEntry *ir_resolve_peer_types(IrAnalyze *ira, AstNode *source_nod |
| 6568 | 6571 | } |
| 6569 | 6572 | if (convert_to_const_slice) { |
| 6570 | 6573 | assert(prev_inst->value.type->id == TypeTableEntryIdArray); |
| 6571 | | return get_slice_type(ira->codegen, prev_inst->value.type->data.array.child_type, true); |
| 6574 | TypeTableEntry *slice_type = get_slice_type(ira->codegen, prev_inst->value.type->data.array.child_type, true); |
| 6575 | if (any_are_pure_error) { |
| 6576 | return get_error_type(ira->codegen, slice_type); |
| 6577 | } else { |
| 6578 | return slice_type; |
| 6579 | } |
| 6572 | 6580 | } else if (any_are_pure_error && prev_inst->value.type->id != TypeTableEntryIdPureError) { |
| 6573 | 6581 | if (prev_inst->value.type->id == TypeTableEntryIdNumLitInt || |
| 6574 | 6582 | prev_inst->value.type->id == TypeTableEntryIdNumLitFloat) |