| author | |
| committer | |
| log | 04742ad6f58ae5860efe9b4846be2caafca079e7 |
| tree | d70f656c96d200e5171ea23a02ee8b55d9e46e78 |
| parent | 96bae851666ada20b77294212a5dcca4dbc50533 |
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 | 1478 | }; |
| 1479 | 1479 | const uncoerced = try sema.resolveInlineBody(&block, value_body, zir_index); |
| 1480 | 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 | 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 @@ |
| 1 | const E = enum(u8) { | |
| 2 | a = undefined, | |
| 3 | b, | |
| 4 | }; | |
| 5 | const U = union(enum(u8)) { | |
| 6 | a: u32 = undefined, | |
| 7 | b, | |
| 8 | }; | |
| 9 | comptime { | |
| 10 | _ = E.a; | |
| 11 | } | |
| 12 | comptime { | |
| 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 |