| ... | @@ -272,8 +272,8 @@ static bool value_cmp_numeric_val_all(ZigValue *left, Cmp predicate, ZigValue *r | ... | @@ -272,8 +272,8 @@ static bool value_cmp_numeric_val_all(ZigValue *left, Cmp predicate, ZigValue *r |
| 272 | static void memoize_field_init_val(CodeGen *codegen, ZigType *container_type, TypeStructField *field); | 272 | static void memoize_field_init_val(CodeGen *codegen, ZigType *container_type, TypeStructField *field); |
| 273 | static void value_to_bigfloat(BigFloat *out, ZigValue *val); | 273 | static void value_to_bigfloat(BigFloat *out, ZigValue *val); |
| 274 | | 274 | |
| 275 | static Error ir_resolve_lazy_recurse(IrAnalyze *ira, AstNode *source_node, ZigValue *val); | 275 | static Error ir_resolve_lazy_recurse(AstNode *source_node, ZigValue *val); |
| 276 | static Error ir_resolve_lazy_recurse_array(IrAnalyze *ira, AstNode *source_node, ZigValue *val, size_t len); | 276 | static Error ir_resolve_lazy_recurse_array(AstNode *source_node, ZigValue *val, size_t len); |
| 277 | | 277 | |
| 278 | | 278 | |
| 279 | static void ir_assert_impl(bool ok, IrInstGen *source_instruction, char const *file, unsigned int line) { | 279 | static void ir_assert_impl(bool ok, IrInstGen *source_instruction, char const *file, unsigned int line) { |
| ... | @@ -558,7 +558,10 @@ static ZigValue *const_ptr_pointee_unchecked_no_isf(CodeGen *g, ZigValue *const_ | ... | @@ -558,7 +558,10 @@ static ZigValue *const_ptr_pointee_unchecked_no_isf(CodeGen *g, ZigValue *const_ |
| 558 | case ConstPtrSpecialBaseStruct: { | 558 | case ConstPtrSpecialBaseStruct: { |
| 559 | ZigValue *struct_val = const_val->data.x_ptr.data.base_struct.struct_val; | 559 | ZigValue *struct_val = const_val->data.x_ptr.data.base_struct.struct_val; |
| 560 | expand_undef_struct(g, struct_val); | 560 | expand_undef_struct(g, struct_val); |
| 561 | result = struct_val->data.x_struct.fields[const_val->data.x_ptr.data.base_struct.field_index]; | 561 | size_t field_index = const_val->data.x_ptr.data.base_struct.field_index; |
| | 562 | assert(struct_val->type->id == ZigTypeIdStruct); |
| | 563 | assert(!struct_val->type->data.structure.fields[field_index]->is_comptime); |
| | 564 | result = struct_val->data.x_struct.fields[field_index]; |
| 562 | break; | 565 | break; |
| 563 | } | 566 | } |
| 564 | case ConstPtrSpecialBaseErrorUnionCode: | 567 | case ConstPtrSpecialBaseErrorUnionCode: |
| ... | @@ -7022,6 +7025,17 @@ static IrInstGen *ir_analyze_struct_literal_to_struct(IrAnalyze *ira, Scope *sco | ... | @@ -7022,6 +7025,17 @@ static IrInstGen *ir_analyze_struct_literal_to_struct(IrAnalyze *ira, Scope *sco |
| 7022 | buf_sprintf("field '%s' declared here", buf_ptr(src_field->name))); | 7025 | buf_sprintf("field '%s' declared here", buf_ptr(src_field->name))); |
| 7023 | return ira->codegen->invalid_inst_gen; | 7026 | return ira->codegen->invalid_inst_gen; |
| 7024 | } | 7027 | } |
| | 7028 | if (dst_field->is_comptime) { |
| | 7029 | ErrorMsg *msg = ir_add_error_node(ira, source_node, buf_sprintf("field '%s' in struct '%s' is comptime, it cannot be assigned", |
| | 7030 | buf_ptr(src_field->name), buf_ptr(&wanted_type->name))); |
| | 7031 | if (wanted_type->data.structure.decl_node) { |
| | 7032 | add_error_note(ira->codegen, msg, wanted_type->data.structure.decl_node, |
| | 7033 | buf_sprintf("struct '%s' declared here", buf_ptr(&wanted_type->name))); |
| | 7034 | } |
| | 7035 | add_error_note(ira->codegen, msg, src_field->decl_node, |
| | 7036 | buf_sprintf("field '%s' declared here", buf_ptr(src_field->name))); |
| | 7037 | return ira->codegen->invalid_inst_gen; |
| | 7038 | } |
| 7025 | | 7039 | |
| 7026 | src_assert(src_field->decl_node != nullptr, source_node); | 7040 | src_assert(src_field->decl_node != nullptr, source_node); |
| 7027 | AstNode *existing_assign_node = field_assign_nodes[dst_field->src_index]; | 7041 | AstNode *existing_assign_node = field_assign_nodes[dst_field->src_index]; |
| ... | @@ -7066,6 +7080,7 @@ static IrInstGen *ir_analyze_struct_literal_to_struct(IrAnalyze *ira, Scope *sco | ... | @@ -7066,6 +7080,7 @@ static IrInstGen *ir_analyze_struct_literal_to_struct(IrAnalyze *ira, Scope *sco |
| 7066 | | 7080 | |
| 7067 | // look for a default field value | 7081 | // look for a default field value |
| 7068 | TypeStructField *field = wanted_type->data.structure.fields[i]; | 7082 | TypeStructField *field = wanted_type->data.structure.fields[i]; |
| | 7083 | assert(!field->is_comptime); // field_assign_nodes[i] should be null for comptime fields |
| 7069 | memoize_field_init_val(ira->codegen, wanted_type, field); | 7084 | memoize_field_init_val(ira->codegen, wanted_type, field); |
| 7070 | if (field->init_val == nullptr) { | 7085 | if (field->init_val == nullptr) { |
| 7071 | ir_add_error_node(ira, source_node, | 7086 | ir_add_error_node(ira, source_node, |
| ... | @@ -7101,6 +7116,9 @@ static IrInstGen *ir_analyze_struct_literal_to_struct(IrAnalyze *ira, Scope *sco | ... | @@ -7101,6 +7116,9 @@ static IrInstGen *ir_analyze_struct_literal_to_struct(IrAnalyze *ira, Scope *sco |
| 7101 | | 7116 | |
| 7102 | for (size_t i = 0; i < actual_field_count; i += 1) { | 7117 | for (size_t i = 0; i < actual_field_count; i += 1) { |
| 7103 | TypeStructField *field = wanted_type->data.structure.fields[i]; | 7118 | TypeStructField *field = wanted_type->data.structure.fields[i]; |
| | 7119 | if (field->is_comptime) |
| | 7120 | continue; |
| | 7121 | |
| 7104 | IrInstGen *field_ptr = ir_analyze_struct_field_ptr(ira, scope, source_node, field, result_loc_inst, wanted_type, true); | 7122 | IrInstGen *field_ptr = ir_analyze_struct_field_ptr(ira, scope, source_node, field, result_loc_inst, wanted_type, true); |
| 7105 | if (type_is_invalid(field_ptr->value->type)) | 7123 | if (type_is_invalid(field_ptr->value->type)) |
| 7106 | return ira->codegen->invalid_inst_gen; | 7124 | return ira->codegen->invalid_inst_gen; |
| ... | @@ -12762,7 +12780,7 @@ static IrInstGen *ir_analyze_fn_call(IrAnalyze *ira, Scope *scope, AstNode *sour | ... | @@ -12762,7 +12780,7 @@ static IrInstGen *ir_analyze_fn_call(IrAnalyze *ira, Scope *scope, AstNode *sour |
| 12762 | while (scope) { | 12780 | while (scope) { |
| 12763 | if (scope->id == ScopeIdVarDecl) { | 12781 | if (scope->id == ScopeIdVarDecl) { |
| 12764 | ScopeVarDecl *var_scope = (ScopeVarDecl *)scope; | 12782 | ScopeVarDecl *var_scope = (ScopeVarDecl *)scope; |
| 12765 | if ((err = ir_resolve_lazy_recurse(ira, | 12783 | if ((err = ir_resolve_lazy_recurse( |
| 12766 | var_scope->var->decl_node, | 12784 | var_scope->var->decl_node, |
| 12767 | var_scope->var->const_value))) | 12785 | var_scope->var->const_value))) |
| 12768 | { | 12786 | { |
| ... | @@ -12968,7 +12986,7 @@ static IrInstGen *ir_analyze_fn_call(IrAnalyze *ira, Scope *scope, AstNode *sour | ... | @@ -12968,7 +12986,7 @@ static IrInstGen *ir_analyze_fn_call(IrAnalyze *ira, Scope *scope, AstNode *sour |
| 12968 | for (size_t i = 0; i < generic_id->param_count; i += 1) { | 12986 | for (size_t i = 0; i < generic_id->param_count; i += 1) { |
| 12969 | ZigValue *generic_param = &generic_id->params[i]; | 12987 | ZigValue *generic_param = &generic_id->params[i]; |
| 12970 | if (generic_param->special != ConstValSpecialRuntime) { | 12988 | if (generic_param->special != ConstValSpecialRuntime) { |
| 12971 | if ((err = ir_resolve_lazy_recurse(ira, source_node, generic_param))) { | 12989 | if ((err = ir_resolve_lazy_recurse(source_node, generic_param))) { |
| 12972 | return ira->codegen->invalid_inst_gen; | 12990 | return ira->codegen->invalid_inst_gen; |
| 12973 | } | 12991 | } |
| 12974 | } | 12992 | } |
| ... | @@ -14912,6 +14930,8 @@ static IrInstGen *ir_analyze_struct_field_ptr(IrAnalyze *ira, Scope *scope, AstN | ... | @@ -14912,6 +14930,8 @@ static IrInstGen *ir_analyze_struct_field_ptr(IrAnalyze *ira, Scope *scope, AstN |
| 14912 | struct_val->data.x_struct.fields = alloc_const_vals_ptrs(ira->codegen, struct_type->data.structure.src_field_count); | 14930 | struct_val->data.x_struct.fields = alloc_const_vals_ptrs(ira->codegen, struct_type->data.structure.src_field_count); |
| 14913 | struct_val->special = ConstValSpecialStatic; | 14931 | struct_val->special = ConstValSpecialStatic; |
| 14914 | for (size_t i = 0; i < struct_type->data.structure.src_field_count; i += 1) { | 14932 | for (size_t i = 0; i < struct_type->data.structure.src_field_count; i += 1) { |
| | 14933 | if (struct_type->data.structure.fields[i]->is_comptime) |
| | 14934 | continue; |
| 14915 | ZigValue *field_val = struct_val->data.x_struct.fields[i]; | 14935 | ZigValue *field_val = struct_val->data.x_struct.fields[i]; |
| 14916 | field_val->special = ConstValSpecialUndef; | 14936 | field_val->special = ConstValSpecialUndef; |
| 14917 | field_val->type = resolve_struct_field_type(ira->codegen, | 14937 | field_val->type = resolve_struct_field_type(ira->codegen, |
| ... | @@ -18286,7 +18306,9 @@ static ZigValue *get_const_field(IrAnalyze *ira, AstNode *source_node, ZigValue | ... | @@ -18286,7 +18306,9 @@ static ZigValue *get_const_field(IrAnalyze *ira, AstNode *source_node, ZigValue |
| 18286 | { | 18306 | { |
| 18287 | Error err; | 18307 | Error err; |
| 18288 | ensure_field_index(struct_value->type, name, field_index); | 18308 | ensure_field_index(struct_value->type, name, field_index); |
| 18289 | ZigValue *val = struct_value->data.x_struct.fields[field_index]; | 18309 | TypeStructField *field = struct_value->type->data.structure.fields[field_index]; |
| | 18310 | ZigValue *val = field->is_comptime ? field->init_val : |
| | 18311 | struct_value->data.x_struct.fields[field_index]; |
| 18290 | if ((err = ir_resolve_const_val(ira->codegen, ira->new_irb.exec, source_node, val, UndefBad))) | 18312 | if ((err = ir_resolve_const_val(ira->codegen, ira->new_irb.exec, source_node, val, UndefBad))) |
| 18291 | return nullptr; | 18313 | return nullptr; |
| 18292 | return val; | 18314 | return val; |
| ... | @@ -22461,7 +22483,7 @@ static void buf_write_value_bytes(CodeGen *codegen, uint8_t *buf, ZigValue *val) | ... | @@ -22461,7 +22483,7 @@ static void buf_write_value_bytes(CodeGen *codegen, uint8_t *buf, ZigValue *val) |
| 22461 | size_t src_field_count = val->type->data.structure.src_field_count; | 22483 | size_t src_field_count = val->type->data.structure.src_field_count; |
| 22462 | for (size_t field_i = 0; field_i < src_field_count; field_i += 1) { | 22484 | for (size_t field_i = 0; field_i < src_field_count; field_i += 1) { |
| 22463 | TypeStructField *struct_field = val->type->data.structure.fields[field_i]; | 22485 | TypeStructField *struct_field = val->type->data.structure.fields[field_i]; |
| 22464 | if (struct_field->gen_index == SIZE_MAX) | 22486 | if (struct_field->gen_index == SIZE_MAX || struct_field->is_comptime) |
| 22465 | continue; | 22487 | continue; |
| 22466 | ZigValue *field_val = val->data.x_struct.fields[field_i]; | 22488 | ZigValue *field_val = val->data.x_struct.fields[field_i]; |
| 22467 | size_t offset = struct_field->offset; | 22489 | size_t offset = struct_field->offset; |
| ... | @@ -22490,6 +22512,10 @@ static void buf_write_value_bytes(CodeGen *codegen, uint8_t *buf, ZigValue *val) | ... | @@ -22490,6 +22512,10 @@ static void buf_write_value_bytes(CodeGen *codegen, uint8_t *buf, ZigValue *val) |
| 22490 | size_t used_bits = 0; | 22512 | size_t used_bits = 0; |
| 22491 | while (src_i < src_field_count) { | 22513 | while (src_i < src_field_count) { |
| 22492 | TypeStructField *field = val->type->data.structure.fields[src_i]; | 22514 | TypeStructField *field = val->type->data.structure.fields[src_i]; |
| | 22515 | if (field->is_comptime) { |
| | 22516 | src_i += 1; |
| | 22517 | continue; |
| | 22518 | } |
| 22493 | assert(field->gen_index != SIZE_MAX); | 22519 | assert(field->gen_index != SIZE_MAX); |
| 22494 | if (field->gen_index != gen_i) | 22520 | if (field->gen_index != gen_i) |
| 22495 | break; | 22521 | break; |
| ... | @@ -22638,9 +22664,11 @@ static Error buf_read_value_bytes(IrAnalyze *ira, CodeGen *codegen, AstNode *sou | ... | @@ -22638,9 +22664,11 @@ static Error buf_read_value_bytes(IrAnalyze *ira, CodeGen *codegen, AstNode *sou |
| 22638 | size_t src_field_count = val->type->data.structure.src_field_count; | 22664 | size_t src_field_count = val->type->data.structure.src_field_count; |
| 22639 | val->data.x_struct.fields = alloc_const_vals_ptrs(codegen, src_field_count); | 22665 | val->data.x_struct.fields = alloc_const_vals_ptrs(codegen, src_field_count); |
| 22640 | for (size_t field_i = 0; field_i < src_field_count; field_i += 1) { | 22666 | for (size_t field_i = 0; field_i < src_field_count; field_i += 1) { |
| | 22667 | TypeStructField *struct_field = val->type->data.structure.fields[field_i]; |
| | 22668 | if (struct_field->is_comptime) |
| | 22669 | continue; |
| 22641 | ZigValue *field_val = val->data.x_struct.fields[field_i]; | 22670 | ZigValue *field_val = val->data.x_struct.fields[field_i]; |
| 22642 | field_val->special = ConstValSpecialStatic; | 22671 | field_val->special = ConstValSpecialStatic; |
| 22643 | TypeStructField *struct_field = val->type->data.structure.fields[field_i]; | | |
| 22644 | field_val->type = struct_field->type_entry; | 22672 | field_val->type = struct_field->type_entry; |
| 22645 | if (struct_field->gen_index == SIZE_MAX) | 22673 | if (struct_field->gen_index == SIZE_MAX) |
| 22646 | continue; | 22674 | continue; |
| ... | @@ -22673,6 +22701,10 @@ static Error buf_read_value_bytes(IrAnalyze *ira, CodeGen *codegen, AstNode *sou | ... | @@ -22673,6 +22701,10 @@ static Error buf_read_value_bytes(IrAnalyze *ira, CodeGen *codegen, AstNode *sou |
| 22673 | uint64_t bit_offset = 0; | 22701 | uint64_t bit_offset = 0; |
| 22674 | while (src_i < src_field_count) { | 22702 | while (src_i < src_field_count) { |
| 22675 | TypeStructField *field = val->type->data.structure.fields[src_i]; | 22703 | TypeStructField *field = val->type->data.structure.fields[src_i]; |
| | 22704 | if (field->is_comptime) { |
| | 22705 | src_i += 1; |
| | 22706 | continue; |
| | 22707 | } |
| 22676 | src_assert(field->gen_index != SIZE_MAX, source_node); | 22708 | src_assert(field->gen_index != SIZE_MAX, source_node); |
| 22677 | if (field->gen_index != gen_i) | 22709 | if (field->gen_index != gen_i) |
| 22678 | break; | 22710 | break; |
| ... | @@ -25554,7 +25586,7 @@ static Error ir_resolve_lazy_raw(AstNode *source_node, ZigValue *val) { | ... | @@ -25554,7 +25586,7 @@ static Error ir_resolve_lazy_raw(AstNode *source_node, ZigValue *val) { |
| 25554 | zig_unreachable(); | 25586 | zig_unreachable(); |
| 25555 | } | 25587 | } |
| 25556 | | 25588 | |
| 25557 | static Error ir_resolve_lazy_recurse_array(IrAnalyze *ira, AstNode *source_node, ZigValue *val, size_t len) { | 25589 | static Error ir_resolve_lazy_recurse_array(AstNode *source_node, ZigValue *val, size_t len) { |
| 25558 | Error err; | 25590 | Error err; |
| 25559 | switch (val->data.x_array.special) { | 25591 | switch (val->data.x_array.special) { |
| 25560 | case ConstArraySpecialUndef: | 25592 | case ConstArraySpecialUndef: |
| ... | @@ -25566,24 +25598,19 @@ static Error ir_resolve_lazy_recurse_array(IrAnalyze *ira, AstNode *source_node, | ... | @@ -25566,24 +25598,19 @@ static Error ir_resolve_lazy_recurse_array(IrAnalyze *ira, AstNode *source_node, |
| 25566 | ZigValue *elems = val->data.x_array.data.s_none.elements; | 25598 | ZigValue *elems = val->data.x_array.data.s_none.elements; |
| 25567 | | 25599 | |
| 25568 | for (size_t i = 0; i < len; i += 1) { | 25600 | for (size_t i = 0; i < len; i += 1) { |
| 25569 | if ((err = ir_resolve_lazy_recurse(ira, source_node, &elems[i]))) | 25601 | if ((err = ir_resolve_lazy_recurse(source_node, &elems[i]))) |
| 25570 | return err; | 25602 | return err; |
| 25571 | } | 25603 | } |
| 25572 | | 25604 | |
| 25573 | return ErrorNone; | 25605 | return ErrorNone; |
| 25574 | } | 25606 | } |
| 25575 | | 25607 | |
| 25576 | static Error ir_resolve_lazy_recurse(IrAnalyze *ira, AstNode *source_node, ZigValue *val) { | 25608 | static Error ir_resolve_lazy_recurse(AstNode *source_node, ZigValue *val) { |
| 25577 | Error err; | 25609 | Error err; |
| 25578 | if ((err = ir_resolve_lazy_raw(source_node, val))) | 25610 | if ((err = ir_resolve_lazy_raw(source_node, val))) |
| 25579 | return err; | 25611 | return err; |
| 25580 | if (val->special == ConstValSpecialRuntime) { | 25612 | assert(val->special != ConstValSpecialRuntime); |
| 25581 | // This shouldn't be possible, it indicates an ICE. | 25613 | assert(val->special != ConstValSpecialLazy); |
| 25582 | // NO_COMMIT | | |
| 25583 | ir_add_error_node(ira, source_node, | | |
| 25584 | buf_sprintf("This is a bug in the Zig compiler. Runtime value found in comptime known value.")); | | |
| 25585 | return ErrorSemanticAnalyzeFail; | | |
| 25586 | } | | |
| 25587 | if (val->special != ConstValSpecialStatic) | 25614 | if (val->special != ConstValSpecialStatic) |
| 25588 | return ErrorNone; | 25615 | return ErrorNone; |
| 25589 | switch (val->type->id) { | 25616 | switch (val->type->id) { |
| ... | @@ -25611,12 +25638,12 @@ static Error ir_resolve_lazy_recurse(IrAnalyze *ira, AstNode *source_node, ZigVa | ... | @@ -25611,12 +25638,12 @@ static Error ir_resolve_lazy_recurse(IrAnalyze *ira, AstNode *source_node, ZigVa |
| 25611 | zig_panic("TODO: ir_resolve_lazy_recurse ZigTypeIdFnFrame"); | 25638 | zig_panic("TODO: ir_resolve_lazy_recurse ZigTypeIdFnFrame"); |
| 25612 | case ZigTypeIdUnion: { | 25639 | case ZigTypeIdUnion: { |
| 25613 | ConstUnionValue *union_val = &val->data.x_union; | 25640 | ConstUnionValue *union_val = &val->data.x_union; |
| 25614 | return ir_resolve_lazy_recurse(ira, source_node, union_val->payload); | 25641 | return ir_resolve_lazy_recurse(source_node, union_val->payload); |
| 25615 | } | 25642 | } |
| 25616 | case ZigTypeIdVector: | 25643 | case ZigTypeIdVector: |
| 25617 | return ir_resolve_lazy_recurse_array(ira, source_node, val, val->type->data.vector.len); | 25644 | return ir_resolve_lazy_recurse_array(source_node, val, val->type->data.vector.len); |
| 25618 | case ZigTypeIdArray: | 25645 | case ZigTypeIdArray: |
| 25619 | return ir_resolve_lazy_recurse_array(ira, source_node, val, val->type->data.array.len); | 25646 | return ir_resolve_lazy_recurse_array(source_node, val, val->type->data.array.len); |
| 25620 | case ZigTypeIdStruct: | 25647 | case ZigTypeIdStruct: |
| 25621 | for (size_t i = 0; i < val->type->data.structure.src_field_count; i += 1) { | 25648 | for (size_t i = 0; i < val->type->data.structure.src_field_count; i += 1) { |
| 25622 | ZigValue *field = val->data.x_struct.fields[i]; | 25649 | ZigValue *field = val->data.x_struct.fields[i]; |
| ... | @@ -25625,7 +25652,7 @@ static Error ir_resolve_lazy_recurse(IrAnalyze *ira, AstNode *source_node, ZigVa | ... | @@ -25625,7 +25652,7 @@ static Error ir_resolve_lazy_recurse(IrAnalyze *ira, AstNode *source_node, ZigVa |
| 25625 | // they are not part of the value. | 25652 | // they are not part of the value. |
| 25626 | continue; | 25653 | continue; |
| 25627 | } | 25654 | } |
| 25628 | if ((err = ir_resolve_lazy_recurse(ira, source_node, field))) | 25655 | if ((err = ir_resolve_lazy_recurse(source_node, field))) |
| 25629 | return err; | 25656 | return err; |
| 25630 | } | 25657 | } |
| 25631 | return ErrorNone; | 25658 | return ErrorNone; |
| ... | @@ -25635,13 +25662,13 @@ static Error ir_resolve_lazy_recurse(IrAnalyze *ira, AstNode *source_node, ZigVa | ... | @@ -25635,13 +25662,13 @@ static Error ir_resolve_lazy_recurse(IrAnalyze *ira, AstNode *source_node, ZigVa |
| 25635 | if (val->data.x_optional == nullptr) | 25662 | if (val->data.x_optional == nullptr) |
| 25636 | return ErrorNone; | 25663 | return ErrorNone; |
| 25637 | | 25664 | |
| 25638 | return ir_resolve_lazy_recurse(ira, source_node, val->data.x_optional); | 25665 | return ir_resolve_lazy_recurse(source_node, val->data.x_optional); |
| 25639 | case ZigTypeIdErrorUnion: { | 25666 | case ZigTypeIdErrorUnion: { |
| 25640 | bool is_err = val->data.x_err_union.error_set->data.x_err_set != nullptr; | 25667 | bool is_err = val->data.x_err_union.error_set->data.x_err_set != nullptr; |
| 25641 | if (is_err) { | 25668 | if (is_err) { |
| 25642 | return ir_resolve_lazy_recurse(ira, source_node, val->data.x_err_union.error_set); | 25669 | return ir_resolve_lazy_recurse(source_node, val->data.x_err_union.error_set); |
| 25643 | } else { | 25670 | } else { |
| 25644 | return ir_resolve_lazy_recurse(ira, source_node, val->data.x_err_union.payload); | 25671 | return ir_resolve_lazy_recurse(source_node, val->data.x_err_union.payload); |
| 25645 | } | 25672 | } |
| 25646 | } | 25673 | } |
| 25647 | } | 25674 | } |