authorgravatar for pentuppup@noreply.codeberg.orgpentuppup <pentuppup@noreply.codeberg.org> 2026-10-01 13:05:37-04:00
committergravatar for pentuppup@noreply.codeberg.orgpentuppup <pentuppup@noreply.codeberg.org> 2026-10-01 17:45:54-04:00
log04742ad6f58ae5860efe9b4846be2caafca079e7
treed70f656c96d200e5171ea23a02ee8b55d9e46e78
parent96bae851666ada20b77294212a5dcca4dbc50533

Sema: fix error on undefined tagged union values


2 files changed, 20 insertions(+), 1 deletions(-)

src/Sema/type_resolution.zig+1-1
...@@ -1478,7 +1478,7 @@ pub fn resolveEnumLayout(sema: *Sema, enum_ty: Type) CompileError!void {...@@ -1478,7 +1478,7 @@ pub fn resolveEnumLayout(sema: *Sema, enum_ty: Type) CompileError!void {
1478 };1478 };
1479 const uncoerced = try sema.resolveInlineBody(&block, value_body, zir_index);1479 const uncoerced = try sema.resolveInlineBody(&block, value_body, zir_index);
1480 const coerced = try sema.coerce(&block, int_tag_ty, uncoerced, field_val_src);1480 const coerced = try sema.coerce(&block, int_tag_ty, uncoerced, field_val_src);
1481 const val = try sema.resolveConstValue(&block, field_val_src, coerced, null);1481 const val = try sema.resolveConstDefinedValue(&block, field_val_src, coerced, null);
1482 enum_obj.field_values.get(ip)[zir_field.idx] = val.toIntern();1482 enum_obj.field_values.get(ip)[zir_field.idx] = val.toIntern();
1483 }1483 }
1484 }1484 }
test/cases/compile_errors/undefined_enum_value.zig created+19
...@@ -0,0 +1,19 @@
1const E = enum(u8) {
2 a = undefined,
3 b,
4};
5const U = union(enum(u8)) {
6 a: u32 = undefined,
7 b,
8};
9comptime {
10 _ = E.a;
11}
12comptime {
13 _ = U.a;
14}
15
16// error
17//
18// :2:9: error: use of undefined value here causes illegal behavior
19// :6:14: error: use of undefined value here causes illegal behavior