From 63f672d3228c2cdd97ab0934b888931a67ce887f Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 21 Jul 2025 16:07:20 -0700 Subject: Sema: fix missed union access OPV --- src/Sema.zig | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/Sema.zig') diff --git a/src/Sema.zig b/src/Sema.zig index 6f7abc83c3..1e3140528a 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -28083,10 +28083,16 @@ fn unionFieldVal( const active_tag = try block.addTyOp(.get_union_tag, .fromInterned(union_obj.enum_tag_ty), union_byval); try sema.addSafetyCheckInactiveUnionField(block, src, active_tag, wanted_tag); } + if (field_ty.zigTypeTag(zcu) == .noreturn) { _ = try block.addNoOp(.unreach); return .unreachable_value; } + + if (try sema.typeHasOnePossibleValue(field_ty)) |field_only_value| { + return Air.internedToRef(field_only_value.toIntern()); + } + try field_ty.resolveLayout(pt); return block.addStructFieldVal(union_byval, field_index, field_ty); } -- cgit v1.2.3