From 04742ad6f58ae5860efe9b4846be2caafca079e7 Mon Sep 17 00:00:00 2001 From: pentuppup Date: Thu, 1 Oct 2026 13:05:37 -0400 Subject: [PATCH] Sema: fix error on undefined tagged union values --- src/Sema/type_resolution.zig | 2 +- .../compile_errors/undefined_enum_value.zig | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 test/cases/compile_errors/undefined_enum_value.zig diff --git a/src/Sema/type_resolution.zig b/src/Sema/type_resolution.zig index a862afa9efa3a524a3b2eaeac8dbef5c2b896f11..a6e6a7609f63a50b18dbc41eeafeb3213f06a823 100644 --- a/src/Sema/type_resolution.zig +++ b/src/Sema/type_resolution.zig @@ -1478,7 +1478,7 @@ pub fn resolveEnumLayout(sema: *Sema, enum_ty: Type) CompileError!void { }; const uncoerced = try sema.resolveInlineBody(&block, value_body, zir_index); const coerced = try sema.coerce(&block, int_tag_ty, uncoerced, field_val_src); - const val = try sema.resolveConstValue(&block, field_val_src, coerced, null); + const val = try sema.resolveConstDefinedValue(&block, field_val_src, coerced, null); enum_obj.field_values.get(ip)[zir_field.idx] = val.toIntern(); } } diff --git a/test/cases/compile_errors/undefined_enum_value.zig b/test/cases/compile_errors/undefined_enum_value.zig new file mode 100644 index 0000000000000000000000000000000000000000..9ed69fa2ebf4171d53d716e9271a32807f10944e --- /dev/null +++ b/test/cases/compile_errors/undefined_enum_value.zig @@ -0,0 +1,19 @@ +const E = enum(u8) { + a = undefined, + b, +}; +const U = union(enum(u8)) { + a: u32 = undefined, + b, +}; +comptime { + _ = E.a; +} +comptime { + _ = U.a; +} + +// error +// +// :2:9: error: use of undefined value here causes illegal behavior +// :6:14: error: use of undefined value here causes illegal behavior -- 2.54.0