aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/pointers.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-10-23 19:46:48 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-10-23 19:47:32 -0700
commit22b4c9e1a9595bd94ada4c500a430e2668ffcd07 (patch)
tree325e312f063422e19b0427373194b703b8cc3b53 /test/behavior/pointers.zig
parentee98d8700818aa667137e3aa580b16df2ba6d680 (diff)
downloadzig-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.zig35
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();
+}