From 303bad9989866373042df9e80722185608bf1147 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 22 Dec 2021 20:48:53 -0700 Subject: [PATCH] behavior tests: stage2 is not yet passing this test Looks like I repeated the same mistake, which last time was addressed in 1e0addcf73ee71d23a41b744995848bcca38e8d3. --- test/behavior/struct_llvm.zig | 35 --------------------------------- test/behavior/struct_stage1.zig | 35 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/test/behavior/struct_llvm.zig b/test/behavior/struct_llvm.zig index 147e58cf63e551858eed70d51a1144b0ef112f08..135c0d8b08827ddca53a5122a7fe3c276856b436 100644 --- a/test/behavior/struct_llvm.zig +++ b/test/behavior/struct_llvm.zig @@ -91,38 +91,3 @@ const Expr = union(enum) { fn alloc(comptime T: type) []T { return &[_]T{}; } - -test "for loop over pointers to struct, getting field from struct pointer" { - const S = struct { - const Foo = struct { - name: []const u8, - }; - - var ok = true; - - fn eql(a: []const u8) bool { - _ = a; - return true; - } - - const ArrayList = struct { - fn toSlice(self: *ArrayList) []*Foo { - _ = self; - return @as([*]*Foo, undefined)[0..0]; - } - }; - - fn doTheTest() !void { - var objects: ArrayList = undefined; - - for (objects.toSlice()) |obj| { - if (eql(obj.name)) { - ok = false; - } - } - - try expect(ok); - } - }; - try S.doTheTest(); -} diff --git a/test/behavior/struct_stage1.zig b/test/behavior/struct_stage1.zig index 46bfd7d28918da30922d7ba9650dfad1dc3f8dd9..cd174f8316b7fc222f770f10e896b9d99271a113 100644 --- a/test/behavior/struct_stage1.zig +++ b/test/behavior/struct_stage1.zig @@ -649,3 +649,38 @@ test "packed struct with undefined initializers" { try S.doTheTest(); comptime try S.doTheTest(); } + +test "for loop over pointers to struct, getting field from struct pointer" { + const S = struct { + const Foo = struct { + name: []const u8, + }; + + var ok = true; + + fn eql(a: []const u8) bool { + _ = a; + return true; + } + + const ArrayList = struct { + fn toSlice(self: *ArrayList) []*Foo { + _ = self; + return @as([*]*Foo, undefined)[0..0]; + } + }; + + fn doTheTest() !void { + var objects: ArrayList = undefined; + + for (objects.toSlice()) |obj| { + if (eql(obj.name)) { + ok = false; + } + } + + try expect(ok); + } + }; + try S.doTheTest(); +} -- 2.54.0