diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-06-13 13:31:15 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-06-13 13:31:15 -0400 |
| commit | efb064449f4db63c1e841f6f0e434f26fcd487ab (patch) | |
| tree | 44073f801cd144bfbc4291550d79927977cf1713 /test | |
| parent | ca0988e1d01bd121100590fb97f8cd9dde15b7d8 (diff) | |
| download | zig-efb064449f4db63c1e841f6f0e434f26fcd487ab.tar.gz zig-efb064449f4db63c1e841f6f0e434f26fcd487ab.zip | |
fix runtime initialize array elem and then implicit cast to slice
Diffstat (limited to 'test')
| -rw-r--r-- | test/stage1/behavior.zig | 2 | ||||
| -rw-r--r-- | test/stage1/behavior/array.zig | 194 |
2 files changed, 101 insertions, 95 deletions
diff --git a/test/stage1/behavior.zig b/test/stage1/behavior.zig index 308c7cd4e4..8c179f6d24 100644 --- a/test/stage1/behavior.zig +++ b/test/stage1/behavior.zig @@ -1,7 +1,7 @@ comptime { _ = @import("behavior/align.zig"); _ = @import("behavior/alignof.zig"); - //_ = @import("behavior/array.zig"); + _ = @import("behavior/array.zig"); _ = @import("behavior/asm.zig"); //_ = @import("behavior/atomics.zig"); _ = @import("behavior/bit_shifting.zig"); diff --git a/test/stage1/behavior/array.zig b/test/stage1/behavior/array.zig index 21d07f75f5..96f7a12cd1 100644 --- a/test/stage1/behavior/array.zig +++ b/test/stage1/behavior/array.zig @@ -172,99 +172,105 @@ fn plusOne(x: u32) u32 { return x + 1; } -test "array literal as argument to function" { - const S = struct { - fn entry(two: i32) void { - foo([_]i32{ - 1, - 2, - 3, - }); - foo([_]i32{ - 1, - two, - 3, - }); - foo2(true, [_]i32{ - 1, - 2, - 3, - }); - foo2(true, [_]i32{ - 1, - two, - 3, - }); - } - fn foo(x: []const i32) void { - expect(x[0] == 1); - expect(x[1] == 2); - expect(x[2] == 3); - } - fn foo2(trash: bool, x: []const i32) void { - expect(trash); - expect(x[0] == 1); - expect(x[1] == 2); - expect(x[2] == 3); - } - }; - S.entry(2); - comptime S.entry(2); +test "runtime initialize array elem and then implicit cast to slice" { + var two: i32 = 2; + const x: []const i32 = [_]i32{two}; + expect(x[0] == 2); } -test "double nested array to const slice cast in array literal" { - const S = struct { - fn entry(two: i32) void { - const cases = [_][]const []const i32{ - [_][]const i32{[_]i32{1}}, - [_][]const i32{[_]i32{ 2, 3 }}, - [_][]const i32{ - [_]i32{4}, - [_]i32{ 5, 6, 7 }, - }, - }; - check(cases); - - const cases2 = [_][]const i32{ - [_]i32{1}, - [_]i32{ two, 3 }, - }; - expect(cases2.len == 2); - expect(cases2[0].len == 1); - expect(cases2[0][0] == 1); - expect(cases2[1].len == 2); - expect(cases2[1][0] == 2); - expect(cases2[1][1] == 3); - - const cases3 = [_][]const []const i32{ - [_][]const i32{[_]i32{1}}, - [_][]const i32{[_]i32{ two, 3 }}, - [_][]const i32{ - [_]i32{4}, - [_]i32{ 5, 6, 7 }, - }, - }; - check(cases3); - } - - fn check(cases: []const []const []const i32) void { - expect(cases.len == 3); - expect(cases[0].len == 1); - expect(cases[0][0].len == 1); - expect(cases[0][0][0] == 1); - expect(cases[1].len == 1); - expect(cases[1][0].len == 2); - expect(cases[1][0][0] == 2); - expect(cases[1][0][1] == 3); - expect(cases[2].len == 2); - expect(cases[2][0].len == 1); - expect(cases[2][0][0] == 4); - expect(cases[2][1].len == 3); - expect(cases[2][1][0] == 5); - expect(cases[2][1][1] == 6); - expect(cases[2][1][2] == 7); - } - }; - S.entry(2); - comptime S.entry(2); -} +//test "array literal as argument to function" { +// const S = struct { +// fn entry(two: i32) void { +// foo([_]i32{ +// 1, +// 2, +// 3, +// }); +// foo([_]i32{ +// 1, +// two, +// 3, +// }); +// foo2(true, [_]i32{ +// 1, +// 2, +// 3, +// }); +// foo2(true, [_]i32{ +// 1, +// two, +// 3, +// }); +// } +// fn foo(x: []const i32) void { +// expect(x[0] == 1); +// expect(x[1] == 2); +// expect(x[2] == 3); +// } +// fn foo2(trash: bool, x: []const i32) void { +// expect(trash); +// expect(x[0] == 1); +// expect(x[1] == 2); +// expect(x[2] == 3); +// } +// }; +// S.entry(2); +// comptime S.entry(2); +//} + +//test "double nested array to const slice cast in array literal" { +// const S = struct { +// fn entry(two: i32) void { +// const cases = [_][]const []const i32{ +// [_][]const i32{[_]i32{1}}, +// [_][]const i32{[_]i32{ 2, 3 }}, +// [_][]const i32{ +// [_]i32{4}, +// [_]i32{ 5, 6, 7 }, +// }, +// }; +// check(cases); +// +// const cases2 = [_][]const i32{ +// [_]i32{1}, +// [_]i32{ two, 3 }, +// }; +// expect(cases2.len == 2); +// expect(cases2[0].len == 1); +// expect(cases2[0][0] == 1); +// expect(cases2[1].len == 2); +// expect(cases2[1][0] == 2); +// expect(cases2[1][1] == 3); +// +// const cases3 = [_][]const []const i32{ +// [_][]const i32{[_]i32{1}}, +// [_][]const i32{[_]i32{ two, 3 }}, +// [_][]const i32{ +// [_]i32{4}, +// [_]i32{ 5, 6, 7 }, +// }, +// }; +// check(cases3); +// } +// +// fn check(cases: []const []const []const i32) void { +// expect(cases.len == 3); +// expect(cases[0].len == 1); +// expect(cases[0][0].len == 1); +// expect(cases[0][0][0] == 1); +// expect(cases[1].len == 1); +// expect(cases[1][0].len == 2); +// expect(cases[1][0][0] == 2); +// expect(cases[1][0][1] == 3); +// expect(cases[2].len == 2); +// expect(cases[2][0].len == 1); +// expect(cases[2][0][0] == 4); +// expect(cases[2][1].len == 3); +// expect(cases[2][1][0] == 5); +// expect(cases[2][1][1] == 6); +// expect(cases[2][1][2] == 7); +// } +// }; +// S.entry(2); +// comptime S.entry(2); +//} |
