| ... | @@ -19794,6 +19794,16 @@ fn zirIntToPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai | ... | @@ -19794,6 +19794,16 @@ fn zirIntToPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai |
| 19794 | const target = sema.mod.getTarget(); | 19794 | const target = sema.mod.getTarget(); |
| 19795 | const ptr_align = try ptr_ty.ptrAlignmentAdvanced(target, sema); | 19795 | const ptr_align = try ptr_ty.ptrAlignmentAdvanced(target, sema); |
| 19796 | | 19796 | |
| | 19797 | if (ptr_ty.isSlice()) { |
| | 19798 | const msg = msg: { |
| | 19799 | const msg = try sema.errMsg(block, type_src, "integer cannot be converted to slice type '{}'", .{ptr_ty.fmt(sema.mod)}); |
| | 19800 | errdefer msg.destroy(sema.gpa); |
| | 19801 | try sema.errNote(block, type_src, msg, "slice length cannot be inferred from address", .{}); |
| | 19802 | break :msg msg; |
| | 19803 | }; |
| | 19804 | return sema.failWithOwnedErrorMsg(msg); |
| | 19805 | } |
| | 19806 | |
| 19797 | if (try sema.resolveDefinedValue(block, operand_src, operand_coerced)) |val| { | 19807 | if (try sema.resolveDefinedValue(block, operand_src, operand_coerced)) |val| { |
| 19798 | const addr = val.toUnsignedInt(target); | 19808 | const addr = val.toUnsignedInt(target); |
| 19799 | if (!ptr_ty.isAllowzeroPtr() and addr == 0) | 19809 | if (!ptr_ty.isAllowzeroPtr() and addr == 0) |