diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-10-23 19:46:48 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-10-23 19:47:32 -0700 |
| commit | 22b4c9e1a9595bd94ada4c500a430e2668ffcd07 (patch) | |
| tree | 325e312f063422e19b0427373194b703b8cc3b53 /test/behavior/pointers.zig | |
| parent | ee98d8700818aa667137e3aa580b16df2ba6d680 (diff) | |
| download | zig-22b4c9e1a9595bd94ada4c500a430e2668ffcd07.tar.gz zig-22b4c9e1a9595bd94ada4c500a430e2668ffcd07.zip | |
stage2: implement more C pointer Sema and comptime ptr arith
Diffstat (limited to 'test/behavior/pointers.zig')
| -rw-r--r-- | test/behavior/pointers.zig | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/behavior/pointers.zig b/test/behavior/pointers.zig index 47d21b8155..69f9e2af2a 100644 --- a/test/behavior/pointers.zig +++ b/test/behavior/pointers.zig @@ -58,3 +58,38 @@ test "initialize const optional C pointer to null" { try expect(a == null); comptime try expect(a == null); } + +test "assigning integer to C pointer" { + var x: i32 = 0; + var ptr: [*c]u8 = 0; + var ptr2: [*c]u8 = x; + if (false) { + ptr; + ptr2; + } +} + +test "C pointer comparison and arithmetic" { + const S = struct { + fn doTheTest() !void { + var ptr1: [*c]u32 = 0; + var ptr2 = ptr1 + 10; + try expect(ptr1 == 0); + try expect(ptr1 >= 0); + try expect(ptr1 <= 0); + // expect(ptr1 < 1); + // expect(ptr1 < one); + // expect(1 > ptr1); + // expect(one > ptr1); + try expect(ptr1 < ptr2); + try expect(ptr2 > ptr1); + try expect(ptr2 >= 40); + try expect(ptr2 == 40); + try expect(ptr2 <= 40); + ptr2 -= 10; + try expect(ptr1 == ptr2); + } + }; + try S.doTheTest(); + comptime try S.doTheTest(); +} |
