aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-02-12 01:38:11 -0500
committerAndrew Kelley <andrew@ziglang.org>2019-02-12 01:38:11 -0500
commit6f05e8d1be083a429673e717e8b3c736c7ddb8d2 (patch)
tree3b4004ef1afaab617282b33eff3a4a45729c0f23 /test
parent285e2f62ba0648d6d8e7ff64d1ee7d2900481e2f (diff)
downloadzig-6f05e8d1be083a429673e717e8b3c736c7ddb8d2.tar.gz
zig-6f05e8d1be083a429673e717e8b3c736c7ddb8d2.zip
implicit casting between C pointer and optional non-C pointer
See #1059
Diffstat (limited to 'test')
-rw-r--r--test/stage1/behavior/pointers.zig10
1 files changed, 10 insertions, 0 deletions
diff --git a/test/stage1/behavior/pointers.zig b/test/stage1/behavior/pointers.zig
index 3f62bd1cec..8d87fe2a20 100644
--- a/test/stage1/behavior/pointers.zig
+++ b/test/stage1/behavior/pointers.zig
@@ -97,3 +97,13 @@ test "peer type resolution with C pointers" {
expect(@typeOf(x3) == [*c]u8);
expect(@typeOf(x4) == [*c]u8);
}
+
+test "implicit casting between C pointer and optional non-C pointer" {
+ var slice: []const u8 = "aoeu";
+ const opt_many_ptr: ?[*]const u8 = slice.ptr;
+ var ptr_opt_many_ptr = &opt_many_ptr;
+ var c_ptr: [*c]const [*c]const u8 = ptr_opt_many_ptr;
+ expect(c_ptr.*.* == 'a');
+ ptr_opt_many_ptr = c_ptr;
+ expect(ptr_opt_many_ptr.*.?[1] == 'o');
+}