| ... | @@ -15,4 +15,42 @@ test "tuple concatenation" { | ... | @@ -15,4 +15,42 @@ test "tuple concatenation" { |
| 15 | }; | 15 | }; |
| 16 | S.doTheTest(); | 16 | S.doTheTest(); |
| 17 | comptime S.doTheTest(); | 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 | } |