From bc7687382784c94c24d9ff4ebe10b03916d81e7c Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Thu, 17 Nov 2022 12:09:53 +0200 Subject: [PATCH] Sema: fix type check in `zirIntToPtr` Simple fix: don't assume a ptr type before it has been checked. Closes #13567 --- src/Sema.zig | 2 +- test/cases/compile_errors/inttoptr_non_ptr_type.zig | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 test/cases/compile_errors/inttoptr_non_ptr_type.zig diff --git a/src/Sema.zig b/src/Sema.zig index 90de77a57e..c465d5f81d 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -18778,8 +18778,8 @@ fn zirIntToPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai const type_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; const ptr_ty = try sema.resolveType(block, src, extra.lhs); - const elem_ty = ptr_ty.elemType2(); try sema.checkPtrType(block, type_src, ptr_ty); + const elem_ty = ptr_ty.elemType2(); const target = sema.mod.getTarget(); const ptr_align = try ptr_ty.ptrAlignmentAdvanced(target, sema); diff --git a/test/cases/compile_errors/inttoptr_non_ptr_type.zig b/test/cases/compile_errors/inttoptr_non_ptr_type.zig new file mode 100644 index 0000000000..6a8af0ab95 --- /dev/null +++ b/test/cases/compile_errors/inttoptr_non_ptr_type.zig @@ -0,0 +1,9 @@ +pub export fn entry() void { + _ = @intToPtr(i32, 10); +} + +// error +// backend=stage2 +// target=native +// +// :2:19: error: expected pointer type, found 'i32'