| ... | @@ -18947,6 +18947,9 @@ fn zirPtrCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air | ... | @@ -18947,6 +18947,9 @@ fn zirPtrCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air |
| 18947 | if (!dest_ty.ptrAllowsZero() and operand_val.isNull()) { | 18947 | if (!dest_ty.ptrAllowsZero() and operand_val.isNull()) { |
| 18948 | return sema.fail(block, operand_src, "null pointer casted to type {}", .{dest_ty.fmt(sema.mod)}); | 18948 | return sema.fail(block, operand_src, "null pointer casted to type {}", .{dest_ty.fmt(sema.mod)}); |
| 18949 | } | 18949 | } |
| | 18950 | if (dest_ty.zigTypeTag() == .Optional and sema.typeOf(ptr).zigTypeTag() != .Optional) { |
| | 18951 | return sema.addConstant(dest_ty, try Value.Tag.opt_payload.create(sema.arena, operand_val)); |
| | 18952 | } |
| 18950 | return sema.addConstant(aligned_dest_ty, operand_val); | 18953 | return sema.addConstant(aligned_dest_ty, operand_val); |
| 18951 | } | 18954 | } |
| 18952 | | 18955 | |