| ... | @@ -6460,6 +6460,9 @@ static TypeTableEntry *ir_resolve_peer_types(IrAnalyze *ira, AstNode *source_nod | ... | @@ -6460,6 +6460,9 @@ static TypeTableEntry *ir_resolve_peer_types(IrAnalyze *ira, AstNode *source_nod |
| 6460 | prev_inst = cur_inst; | 6460 | prev_inst = cur_inst; |
| 6461 | continue; | 6461 | continue; |
| 6462 | } else if (cur_type->id == TypeTableEntryIdPureError) { | 6462 | } else if (cur_type->id == TypeTableEntryIdPureError) { |
| | 6463 | if (prev_type->id == TypeTableEntryIdArray) { |
| | 6464 | convert_to_const_slice = true; |
| | 6465 | } |
| 6463 | any_are_pure_error = true; | 6466 | any_are_pure_error = true; |
| 6464 | continue; | 6467 | continue; |
| 6465 | } else if (cur_type->id == TypeTableEntryIdNullLit) { | 6468 | } else if (cur_type->id == TypeTableEntryIdNullLit) { |
| ... | @@ -6568,7 +6571,12 @@ static TypeTableEntry *ir_resolve_peer_types(IrAnalyze *ira, AstNode *source_nod | ... | @@ -6568,7 +6571,12 @@ static TypeTableEntry *ir_resolve_peer_types(IrAnalyze *ira, AstNode *source_nod |
| 6568 | } | 6571 | } |
| 6569 | if (convert_to_const_slice) { | 6572 | if (convert_to_const_slice) { |
| 6570 | assert(prev_inst->value.type->id == TypeTableEntryIdArray); | 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 | } else if (any_are_pure_error && prev_inst->value.type->id != TypeTableEntryIdPureError) { | 6580 | } else if (any_are_pure_error && prev_inst->value.type->id != TypeTableEntryIdPureError) { |
| 6573 | if (prev_inst->value.type->id == TypeTableEntryIdNumLitInt || | 6581 | if (prev_inst->value.type->id == TypeTableEntryIdNumLitInt || |
| 6574 | prev_inst->value.type->id == TypeTableEntryIdNumLitFloat) | 6582 | prev_inst->value.type->id == TypeTableEntryIdNumLitFloat) |