From 3e084d8de352927dad182f99aeb3f166b348c192 Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Thu, 5 Jan 2023 13:43:06 +0200 Subject: [PATCH] Sema: only untyped undefined should coerce to all types Closes #13958 --- src/Sema.zig | 2 +- .../only_untyped_undef_coerces_to_all_types.zig | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 test/cases/compile_errors/only_untyped_undef_coerces_to_all_types.zig diff --git a/src/Sema.zig b/src/Sema.zig index 657ca331b2..bc861f170a 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -24477,7 +24477,7 @@ fn coerceExtra( return block.addBitCast(dest_ty, inst); } - const is_undef = if (maybe_inst_val) |val| val.isUndef() else false; + const is_undef = inst_ty.zigTypeTag() == .Undefined; switch (dest_ty.zigTypeTag()) { .Optional => optional: { diff --git a/test/cases/compile_errors/only_untyped_undef_coerces_to_all_types.zig b/test/cases/compile_errors/only_untyped_undef_coerces_to_all_types.zig new file mode 100644 index 0000000000..091c51ff3b --- /dev/null +++ b/test/cases/compile_errors/only_untyped_undef_coerces_to_all_types.zig @@ -0,0 +1,11 @@ +pub export fn entry() void { + const x: []u8 = undefined; + const y: f32 = x; + _ = y; +} + +// error +// backend=stage2 +// target=native +// +// :3:20: error: expected type 'f32', found '[]u8'