aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitchell Hashimoto <mitchell.hashimoto@gmail.com>2022-02-25 18:56:27 -0800
committerMitchell Hashimoto <mitchell.hashimoto@gmail.com>2022-02-25 18:56:27 -0800
commitf0232fc07d3c8695de351d3000bc7eb3e3f1da5c (patch)
treeae7ffdcf2caa34e0069db592ab1ab4ab9f937bcb
parent91af552f87817f3a5fa23d812cecc79649c7e506 (diff)
downloadzig-f0232fc07d3c8695de351d3000bc7eb3e3f1da5c.tar.gz
zig-f0232fc07d3c8695de351d3000bc7eb3e3f1da5c.zip
stage2: split up the big sentinel peer cast test to multiple
This way we can fix them one at a time.
-rw-r--r--test/behavior/cast.zig103
1 files changed, 61 insertions, 42 deletions
diff --git a/test/behavior/cast.zig b/test/behavior/cast.zig
index 3d5b5bd4fb..eda49e7de5 100644
--- a/test/behavior/cast.zig
+++ b/test/behavior/cast.zig
@@ -675,55 +675,74 @@ test "peer resolution of string literals" {
comptime try S.doTheTest(.b);
}
-test "type coercion related to sentinel-termination" {
- if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
+test "peer cast [:x]T to []T" {
+ const S = struct {
+ fn doTheTest() !void {
+ var array = [4:0]i32{ 1, 2, 3, 4 };
+ var slice: [:0]i32 = &array;
+ var dest: []i32 = slice;
+ try expect(mem.eql(i32, dest, &[_]i32{ 1, 2, 3, 4 }));
+ }
+ };
+ try S.doTheTest();
+ comptime try S.doTheTest();
+}
+test "peer cast [N:x]T to [N]T" {
const S = struct {
fn doTheTest() !void {
- // [:x]T to []T
- {
- var array = [4:0]i32{ 1, 2, 3, 4 };
- var slice: [:0]i32 = &array;
- var dest: []i32 = slice;
- try expect(mem.eql(i32, dest, &[_]i32{ 1, 2, 3, 4 }));
- }
+ var array = [4:0]i32{ 1, 2, 3, 4 };
+ var dest: [4]i32 = array;
+ try expect(mem.eql(i32, &dest, &[_]i32{ 1, 2, 3, 4 }));
+ }
+ };
+ try S.doTheTest();
+ comptime try S.doTheTest();
+}
- // [*:x]T to [*]T
- {
- var array = [4:99]i32{ 1, 2, 3, 4 };
- var dest: [*]i32 = &array;
- try expect(dest[0] == 1);
- try expect(dest[1] == 2);
- try expect(dest[2] == 3);
- try expect(dest[3] == 4);
- try expect(dest[4] == 99);
- }
+test "peer cast *[N:x]T to *[N]T" {
+ const S = struct {
+ fn doTheTest() !void {
+ var array = [4:0]i32{ 1, 2, 3, 4 };
+ var dest: *[4]i32 = &array;
+ try expect(mem.eql(i32, dest, &[_]i32{ 1, 2, 3, 4 }));
+ }
+ };
+ try S.doTheTest();
+ comptime try S.doTheTest();
+}
- // [N:x]T to [N]T
- {
- var array = [4:0]i32{ 1, 2, 3, 4 };
- var dest: [4]i32 = array;
- try expect(mem.eql(i32, &dest, &[_]i32{ 1, 2, 3, 4 }));
- }
+test "peer cast [*:x]T to [*]T" {
+ if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
- // *[N:x]T to *[N]T
- {
- var array = [4:0]i32{ 1, 2, 3, 4 };
- var dest: *[4]i32 = &array;
- try expect(mem.eql(i32, dest, &[_]i32{ 1, 2, 3, 4 }));
- }
+ const S = struct {
+ fn doTheTest() !void {
+ var array = [4:99]i32{ 1, 2, 3, 4 };
+ var dest: [*]i32 = &array;
+ try expect(dest[0] == 1);
+ try expect(dest[1] == 2);
+ try expect(dest[2] == 3);
+ try expect(dest[3] == 4);
+ try expect(dest[4] == 99);
+ }
+ };
+ try S.doTheTest();
+ comptime try S.doTheTest();
+}
- // [:x]T to [*:x]T
- {
- var array = [4:0]i32{ 1, 2, 3, 4 };
- var slice: [:0]i32 = &array;
- var dest: [*:0]i32 = slice;
- try expect(dest[0] == 1);
- try expect(dest[1] == 2);
- try expect(dest[2] == 3);
- try expect(dest[3] == 4);
- try expect(dest[4] == 0);
- }
+test "peer cast [:x]T to [*:x]T" {
+ if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
+
+ const S = struct {
+ fn doTheTest() !void {
+ var array = [4:0]i32{ 1, 2, 3, 4 };
+ var slice: [:0]i32 = &array;
+ var dest: [*:0]i32 = slice;
+ try expect(dest[0] == 1);
+ try expect(dest[1] == 2);
+ try expect(dest[2] == 3);
+ try expect(dest[3] == 4);
+ try expect(dest[4] == 0);
}
};
try S.doTheTest();