diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2018-06-04 01:09:15 -0400 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2018-06-04 01:39:57 -0400 |
| commit | 96164ce61377b36bcaf0c4087ca9b1ab822b9457 (patch) | |
| tree | db4ab07dd179c8f72a05028edb6ad60bfabd4a74 /test/cases/pointers.zig | |
| parent | 4c273126dfc44cf4fcf9d5d97bf1cb1da07d7bd7 (diff) | |
| download | zig-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.zig | 30 |
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; +} |
