| ... | @@ -5000,9 +5000,11 @@ fn validateUnionInit( | ... | @@ -5000,9 +5000,11 @@ fn validateUnionInit( |
| 5000 | } | 5000 | } |
| 5001 | if (init_ref) |v| try sema.validateRuntimeValue(block, block.nodeOffset(field_ptr_data.src_node), v); | 5001 | if (init_ref) |v| try sema.validateRuntimeValue(block, block.nodeOffset(field_ptr_data.src_node), v); |
| 5002 | | 5002 | |
| 5003 | const new_tag = Air.internedToRef(tag_val.toIntern()); | 5003 | if ((try sema.typeHasOnePossibleValue(tag_ty)) == null) { |
| 5004 | const set_tag_inst = try block.addBinOp(.set_union_tag, union_ptr, new_tag); | 5004 | const new_tag = Air.internedToRef(tag_val.toIntern()); |
| 5005 | try sema.checkComptimeKnownStore(block, set_tag_inst, LazySrcLoc.unneeded); // `unneeded` since this isn't a "proper" store | 5005 | const set_tag_inst = try block.addBinOp(.set_union_tag, union_ptr, new_tag); |
| | 5006 | try sema.checkComptimeKnownStore(block, set_tag_inst, LazySrcLoc.unneeded); // `unneeded` since this isn't a "proper" store |
| | 5007 | } |
| 5006 | } | 5008 | } |
| 5007 | | 5009 | |
| 5008 | fn validateStructInit( | 5010 | fn validateStructInit( |
| ... | @@ -19690,8 +19692,10 @@ fn zirStructInit( | ... | @@ -19690,8 +19692,10 @@ fn zirStructInit( |
| 19690 | const base_ptr = try sema.optEuBasePtrInit(block, alloc, src); | 19692 | const base_ptr = try sema.optEuBasePtrInit(block, alloc, src); |
| 19691 | const field_ptr = try sema.unionFieldPtr(block, field_src, base_ptr, field_name, field_src, resolved_ty, true); | 19693 | const field_ptr = try sema.unionFieldPtr(block, field_src, base_ptr, field_name, field_src, resolved_ty, true); |
| 19692 | try sema.storePtr(block, src, field_ptr, init_inst); | 19694 | try sema.storePtr(block, src, field_ptr, init_inst); |
| 19693 | const new_tag = Air.internedToRef(tag_val.toIntern()); | 19695 | if ((try sema.typeHasOnePossibleValue(tag_ty)) == null) { |
| 19694 | _ = try block.addBinOp(.set_union_tag, base_ptr, new_tag); | 19696 | const new_tag = Air.internedToRef(tag_val.toIntern()); |
| | 19697 | _ = try block.addBinOp(.set_union_tag, base_ptr, new_tag); |
| | 19698 | } |
| 19695 | return sema.makePtrConst(block, alloc); | 19699 | return sema.makePtrConst(block, alloc); |
| 19696 | } | 19700 | } |
| 19697 | | 19701 | |