diff options
| author | Mitchell Hashimoto <mitchell.hashimoto@gmail.com> | 2022-02-25 18:56:27 -0800 |
|---|---|---|
| committer | Mitchell Hashimoto <mitchell.hashimoto@gmail.com> | 2022-02-25 18:56:27 -0800 |
| commit | f0232fc07d3c8695de351d3000bc7eb3e3f1da5c (patch) | |
| tree | ae7ffdcf2caa34e0069db592ab1ab4ab9f937bcb | |
| parent | 91af552f87817f3a5fa23d812cecc79649c7e506 (diff) | |
| download | zig-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.zig | 103 |
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(); |
