From e297860158cabb74a261a979f2f17305716c6e10 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Fri, 4 Mar 2022 15:39:24 -0800 Subject: [PATCH] stage2: test changed behavior of c pointer resolution from stage1 stage1 peer resolves the given test to `[*c]u8` but stage2 makes that a const u8. I believe stage2 behavior is correct since the pointer itself is const. --- test/behavior/pointers.zig | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/behavior/pointers.zig b/test/behavior/pointers.zig index dc46eeeca8..6fd7e41a6d 100644 --- a/test/behavior/pointers.zig +++ b/test/behavior/pointers.zig @@ -142,6 +142,15 @@ test "peer type resolution with C pointers" { try expect(@TypeOf(x4) == [*c]u8); } +test "peer type resolution with C pointer and const pointer" { + // stage1 incorrectly resolves to [*]u8 + if (builtin.zig_backend == .stage1) return error.SkipZigTest; + + var ptr_c: [*c]u8 = undefined; + const ptr_const: u8 = undefined; + try expect(@TypeOf(ptr_c, &ptr_const) == [*c]const u8); +} + test "implicit casting between C pointer and optional non-C pointer" { if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;