aboutsummaryrefslogtreecommitdiff
path: root/test/cases/pointers.zig
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-06-04 01:09:15 -0400
committerAndrew Kelley <superjoe30@gmail.com>2018-06-04 01:39:57 -0400
commit96164ce61377b36bcaf0c4087ca9b1ab822b9457 (patch)
treedb4ab07dd179c8f72a05028edb6ad60bfabd4a74 /test/cases/pointers.zig
parent4c273126dfc44cf4fcf9d5d97bf1cb1da07d7bd7 (diff)
downloadzig-96164ce61377b36bcaf0c4087ca9b1ab822b9457.tar.gz
zig-96164ce61377b36bcaf0c4087ca9b1ab822b9457.zip
disallow single-item pointer indexing
add pointer arithmetic for unknown length pointer
Diffstat (limited to 'test/cases/pointers.zig')
-rw-r--r--test/cases/pointers.zig30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/cases/pointers.zig b/test/cases/pointers.zig
index 87b3d25a74..47afb60a2e 100644
--- a/test/cases/pointers.zig
+++ b/test/cases/pointers.zig
@@ -12,3 +12,33 @@ fn testDerefPtr() void {
y.* += 1;
assert(x == 1235);
}
+
+test "pointer arithmetic" {
+ var ptr = c"abcd";
+
+ assert(ptr[0] == 'a');
+ ptr += 1;
+ assert(ptr[0] == 'b');
+ ptr += 1;
+ assert(ptr[0] == 'c');
+ ptr += 1;
+ assert(ptr[0] == 'd');
+ ptr += 1;
+ assert(ptr[0] == 0);
+ ptr -= 1;
+ assert(ptr[0] == 'd');
+ ptr -= 1;
+ assert(ptr[0] == 'c');
+ ptr -= 1;
+ assert(ptr[0] == 'b');
+ ptr -= 1;
+ assert(ptr[0] == 'a');
+}
+
+test "double pointer parsing" {
+ comptime assert(PtrOf(PtrOf(i32)) == **i32);
+}
+
+fn PtrOf(comptime T: type) type {
+ return *T;
+}