| author | |
| committer | |
| log | 303bad9989866373042df9e80722185608bf1147 |
| tree | 571f9bd333e39035d256263de8b0693943d499c0 |
| parent | cc937369fb8fed44e8e1b653f1f22805c84a3507 |
Looks like I repeated the same mistake, which last time was addressed in
1e0addcf73ee71d23a41b744995848bcca38e8d3.2 files changed, 35 insertions(+), 35 deletions(-)
test/behavior/struct_llvm.zig-35| ... | @@ -91,38 +91,3 @@ const Expr = union(enum) { | ... | @@ -91,38 +91,3 @@ const Expr = union(enum) { |
| 91 | fn alloc(comptime T: type) []T { | 91 | fn alloc(comptime T: type) []T { |
| 92 | return &[_]T{}; | 92 | return &[_]T{}; |
| 93 | } | 93 | } |
| 94 | |||
| 95 | test "for loop over pointers to struct, getting field from struct pointer" { | ||
| 96 | const S = struct { | ||
| 97 | const Foo = struct { | ||
| 98 | name: []const u8, | ||
| 99 | }; | ||
| 100 | |||
| 101 | var ok = true; | ||
| 102 | |||
| 103 | fn eql(a: []const u8) bool { | ||
| 104 | _ = a; | ||
| 105 | return true; | ||
| 106 | } | ||
| 107 | |||
| 108 | const ArrayList = struct { | ||
| 109 | fn toSlice(self: *ArrayList) []*Foo { | ||
| 110 | _ = self; | ||
| 111 | return @as([*]*Foo, undefined)[0..0]; | ||
| 112 | } | ||
| 113 | }; | ||
| 114 | |||
| 115 | fn doTheTest() !void { | ||
| 116 | var objects: ArrayList = undefined; | ||
| 117 | |||
| 118 | for (objects.toSlice()) |obj| { | ||
| 119 | if (eql(obj.name)) { | ||
| 120 | ok = false; | ||
| 121 | } | ||
| 122 | } | ||
| 123 | |||
| 124 | try expect(ok); | ||
| 125 | } | ||
| 126 | }; | ||
| 127 | try S.doTheTest(); | ||
| 128 | } |
test/behavior/struct_stage1.zig+35| ... | @@ -649,3 +649,38 @@ test "packed struct with undefined initializers" { | ... | @@ -649,3 +649,38 @@ test "packed struct with undefined initializers" { |
| 649 | try S.doTheTest(); | 649 | try S.doTheTest(); |
| 650 | comptime try S.doTheTest(); | 650 | comptime try S.doTheTest(); |
| 651 | } | 651 | } |
| 652 | |||
| 653 | test "for loop over pointers to struct, getting field from struct pointer" { | ||
| 654 | const S = struct { | ||
| 655 | const Foo = struct { | ||
| 656 | name: []const u8, | ||
| 657 | }; | ||
| 658 | |||
| 659 | var ok = true; | ||
| 660 | |||
| 661 | fn eql(a: []const u8) bool { | ||
| 662 | _ = a; | ||
| 663 | return true; | ||
| 664 | } | ||
| 665 | |||
| 666 | const ArrayList = struct { | ||
| 667 | fn toSlice(self: *ArrayList) []*Foo { | ||
| 668 | _ = self; | ||
| 669 | return @as([*]*Foo, undefined)[0..0]; | ||
| 670 | } | ||
| 671 | }; | ||
| 672 | |||
| 673 | fn doTheTest() !void { | ||
| 674 | var objects: ArrayList = undefined; | ||
| 675 | |||
| 676 | for (objects.toSlice()) |obj| { | ||
| 677 | if (eql(obj.name)) { | ||
| 678 | ok = false; | ||
| 679 | } | ||
| 680 | } | ||
| 681 | |||
| 682 | try expect(ok); | ||
| 683 | } | ||
| 684 | }; | ||
| 685 | try S.doTheTest(); | ||
| 686 | } |