| ... | ... | @@ -15,4 +15,42 @@ test "tuple concatenation" { |
| 15 | 15 | }; |
| 16 | 16 | S.doTheTest(); |
| 17 | 17 | comptime S.doTheTest(); |
| 18 | |
| 19 | const T = struct { |
| 20 | fn consume_tuple(tuple: var, len: usize) void { |
| 21 | expect(tuple.len == len); |
| 22 | } |
| 23 | |
| 24 | fn doTheTest() void { |
| 25 | const t1 = .{}; |
| 26 | |
| 27 | var rt_var: u8 = 42; |
| 28 | const t2 = .{rt_var} ++ .{}; |
| 29 | |
| 30 | expect(t2.len == 1); |
| 31 | expect(t2.@"0" == rt_var); |
| 32 | expect(t2.@"0" == 42); |
| 33 | expect(&t2.@"0" != &rt_var); |
| 34 | |
| 35 | consume_tuple(t1 ++ t1, 0); |
| 36 | consume_tuple(.{} ++ .{}, 0); |
| 37 | consume_tuple(.{0} ++ .{}, 1); |
| 38 | consume_tuple(.{0} ++ .{1}, 2); |
| 39 | consume_tuple(.{0, 1, 2} ++ .{u8, 1, noreturn}, 6); |
| 40 | consume_tuple(t2 ++ t1, 1); |
| 41 | consume_tuple(t1 ++ t2, 1); |
| 42 | consume_tuple(t2 ++ t2, 2); |
| 43 | consume_tuple(.{rt_var} ++ .{}, 1); |
| 44 | consume_tuple(.{rt_var} ++ t1, 1); |
| 45 | consume_tuple(.{} ++ .{rt_var}, 1); |
| 46 | consume_tuple(t2 ++ .{void}, 2); |
| 47 | consume_tuple(t2 ++ .{0}, 2); |
| 48 | consume_tuple(.{0} ++ t2, 2); |
| 49 | consume_tuple(.{void} ++ t2, 2); |
| 50 | consume_tuple(.{u8} ++ .{rt_var} ++ .{true}, 3); |
| 51 | } |
| 52 | }; |
| 53 | |
| 54 | T.doTheTest(); |
| 55 | comptime T.doTheTest(); |
| 18 | 56 | } |