aboutsummaryrefslogtreecommitdiff
path: root/test/cases/array.zig
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-06-05 10:29:54 -0400
committerAndrew Kelley <superjoe30@gmail.com>2018-06-05 10:29:54 -0400
commit7dd18294b7988062461430d431eaad2ad7b19daa (patch)
tree8ce835394267efdf369948f0438de35a29db3b9f /test/cases/array.zig
parent58ce79f9352a6139c873df6d99d1531101350e9f (diff)
parent677eaf29b10df9b1dc461b37e7be78734b11ef19 (diff)
downloadzig-7dd18294b7988062461430d431eaad2ad7b19daa.tar.gz
zig-7dd18294b7988062461430d431eaad2ad7b19daa.zip
Merge remote-tracking branch 'origin/master' into llvm7
Diffstat (limited to 'test/cases/array.zig')
-rw-r--r--test/cases/array.zig29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/cases/array.zig b/test/cases/array.zig
index 9a405216d8..ef919b27bd 100644
--- a/test/cases/array.zig
+++ b/test/cases/array.zig
@@ -115,3 +115,32 @@ test "array len property" {
var x: [5]i32 = undefined;
assert(@typeOf(x).len == 5);
}
+
+test "single-item pointer to array indexing and slicing" {
+ testSingleItemPtrArrayIndexSlice();
+ comptime testSingleItemPtrArrayIndexSlice();
+}
+
+fn testSingleItemPtrArrayIndexSlice() void {
+ var array = "aaaa";
+ doSomeMangling(&array);
+ assert(mem.eql(u8, "azya", array));
+}
+
+fn doSomeMangling(array: *[4]u8) void {
+ array[1] = 'z';
+ array[2..3][0] = 'y';
+}
+
+test "implicit cast single-item pointer" {
+ testImplicitCastSingleItemPtr();
+ comptime testImplicitCastSingleItemPtr();
+}
+
+fn testImplicitCastSingleItemPtr() void {
+ var byte: u8 = 100;
+ const slice = (*[1]u8)(&byte)[0..];
+ slice[0] += 1;
+ assert(byte == 101);
+}
+