diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2025-07-21 16:07:20 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2025-07-21 16:07:20 -0700 |
| commit | 63f672d3228c2cdd97ab0934b888931a67ce887f (patch) | |
| tree | 87149af03fdb6acbc92e8cf7cc8566d80f1c4985 /src/Sema.zig | |
| parent | cb6702f42d1325d3c751a74bd7e5398d404c07f4 (diff) | |
| download | zig-63f672d3228c2cdd97ab0934b888931a67ce887f.tar.gz zig-63f672d3228c2cdd97ab0934b888931a67ce887f.zip | |
Sema: fix missed union access OPV
Diffstat (limited to 'src/Sema.zig')
| -rw-r--r-- | src/Sema.zig | 6 |
1 files changed, 6 insertions, 0 deletions
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); } |
