authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-21 16:07:20-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-21 16:07:20-07:00
log63f672d3228c2cdd97ab0934b888931a67ce887f
tree87149af03fdb6acbc92e8cf7cc8566d80f1c4985
parentcb6702f42d1325d3c751a74bd7e5398d404c07f4

Sema: fix missed union access OPV


1 files changed, 6 insertions(+), 0 deletions(-)

src/Sema.zig+6
...@@ -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}