commit 63f672d3228c2cdd97ab0934b888931a67ce887f (tree)
parent cb6702f42d1325d3c751a74bd7e5398d404c07f4
Author: Andrew Kelley <andrew@ziglang.org>
Date: Mon, 21 Jul 2025 16:07:20 -0700
Sema: fix missed union access OPV
Diffstat:
1 file changed, 6 insertions(+), 0 deletions(-)
diff --git 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);
}