From 1365be5d02429dbbbfab43133d399b2af42047c5 Mon Sep 17 00:00:00 2001 From: mlugg Date: Sun, 15 Sep 2024 15:45:20 +0100 Subject: compiler: provide correct result types to `+=` and `-=` Resolves: #21341 --- test/behavior/pointers.zig | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'test/behavior/pointers.zig') diff --git a/test/behavior/pointers.zig b/test/behavior/pointers.zig index 07041e70a1..bf0d37cc2b 100644 --- a/test/behavior/pointers.zig +++ b/test/behavior/pointers.zig @@ -98,6 +98,21 @@ test "pointer subtraction" { } } +test "pointer arithmetic with non-trivial RHS" { + var t: bool = undefined; + t = true; + + var ptr: [*]const u8 = "Hello, World!"; + ptr += if (t) 5 else 2; + try expect(ptr[0] == ','); + ptr += if (!t) 4 else 2; + try expect(ptr[0] == 'W'); + ptr -= if (t) @as(usize, 6) else 3; + try expect(ptr[0] == 'e'); + ptr -= if (!t) @as(usize, 0) else 1; + try expect(ptr[0] == 'H'); +} + test "double pointer parsing" { comptime assert(PtrOf(PtrOf(i32)) == **i32); } -- cgit v1.2.3