| ... | @@ -574,3 +574,25 @@ test "tuple to array handles sentinel" { | ... | @@ -574,3 +574,25 @@ test "tuple to array handles sentinel" { |
| 574 | }; | 574 | }; |
| 575 | try expect(S.b[0] == 1); | 575 | try expect(S.b[0] == 1); |
| 576 | } | 576 | } |
| | 577 | |
| | 578 | test "array init of container level array variable" { |
| | 579 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| | 580 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| | 581 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| | 582 | |
| | 583 | const S = struct { |
| | 584 | var pair: [2]usize = .{ 1, 2 }; |
| | 585 | noinline fn foo(x: usize, y: usize) void { |
| | 586 | pair = [2]usize{ x, y }; |
| | 587 | } |
| | 588 | noinline fn bar(x: usize, y: usize) void { |
| | 589 | var tmp: [2]usize = .{ x, y }; |
| | 590 | pair = tmp; |
| | 591 | } |
| | 592 | }; |
| | 593 | try expectEqual([2]usize{ 1, 2 }, S.pair); |
| | 594 | S.foo(3, 4); |
| | 595 | try expectEqual([2]usize{ 3, 4 }, S.pair); |
| | 596 | S.bar(5, 6); |
| | 597 | try expectEqual([2]usize{ 5, 6 }, S.pair); |
| | 598 | } |