From 96a5f7c8edac4bb2f50bdfe31c1287207d90d29b Mon Sep 17 00:00:00 2001 From: Pavel Verigo Date: Sun, 28 Jan 2024 17:15:33 +0100 Subject: Sema: fix casting runtime value to enum with comptime int tag type --- src/Sema.zig | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/Sema.zig') diff --git a/src/Sema.zig b/src/Sema.zig index e52a795314..af3e3700d7 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -8657,6 +8657,12 @@ fn zirEnumFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError return Air.internedToRef((try mod.getCoerced(int_val, dest_ty)).toIntern()); } + if (dest_ty.intTagType(mod).zigTypeTag(mod) == .ComptimeInt) { + return sema.failWithNeededComptime(block, operand_src, .{ + .needed_comptime_reason = "value being casted to enum with 'comptime_int' tag type must be comptime-known", + }); + } + if (try sema.typeHasOnePossibleValue(dest_ty)) |opv| { const result = Air.internedToRef(opv.toIntern()); // The operand is runtime-known but the result is comptime-known. In -- cgit v1.2.3