| ... | @@ -28083,10 +28083,16 @@ fn unionFieldVal( | ... | @@ -28083,10 +28083,16 @@ fn unionFieldVal( |
| 28083 | const active_tag = try block.addTyOp(.get_union_tag, .fromInterned(union_obj.enum_tag_ty), union_byval); | 28083 | const active_tag = try block.addTyOp(.get_union_tag, .fromInterned(union_obj.enum_tag_ty), union_byval); |
| 28084 | try sema.addSafetyCheckInactiveUnionField(block, src, active_tag, wanted_tag); | 28084 | try sema.addSafetyCheckInactiveUnionField(block, src, active_tag, wanted_tag); |
| 28085 | } | 28085 | } |
| | 28086 | |
| 28086 | if (field_ty.zigTypeTag(zcu) == .noreturn) { | 28087 | if (field_ty.zigTypeTag(zcu) == .noreturn) { |
| 28087 | _ = try block.addNoOp(.unreach); | 28088 | _ = try block.addNoOp(.unreach); |
| 28088 | return .unreachable_value; | 28089 | return .unreachable_value; |
| 28089 | } | 28090 | } |
| | 28091 | |
| | 28092 | if (try sema.typeHasOnePossibleValue(field_ty)) |field_only_value| { |
| | 28093 | return Air.internedToRef(field_only_value.toIntern()); |
| | 28094 | } |
| | 28095 | |
| 28090 | try field_ty.resolveLayout(pt); | 28096 | try field_ty.resolveLayout(pt); |
| 28091 | return block.addStructFieldVal(union_byval, field_index, field_ty); | 28097 | return block.addStructFieldVal(union_byval, field_index, field_ty); |
| 28092 | } | 28098 | } |