From 7705a4e8651a493590eed5a79d5361bc6b54985e Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Sat, 29 Oct 2022 15:18:07 +0300 Subject: [PATCH] Sema: wrap optionals in `zirPtrCast` when needed --- src/Sema.zig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Sema.zig b/src/Sema.zig index 7be0336d8ff10f51225310cf43a175e179341e71..5aa3c8b7005905d158e92212cf73a59a7e81e6c9 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -18947,6 +18947,9 @@ fn zirPtrCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air if (!dest_ty.ptrAllowsZero() and operand_val.isNull()) { return sema.fail(block, operand_src, "null pointer casted to type {}", .{dest_ty.fmt(sema.mod)}); } + if (dest_ty.zigTypeTag() == .Optional and sema.typeOf(ptr).zigTypeTag() != .Optional) { + return sema.addConstant(dest_ty, try Value.Tag.opt_payload.create(sema.arena, operand_val)); + } return sema.addConstant(aligned_dest_ty, operand_val); } -- 2.54.0