Commit 75f8c04d6d

r00ster91 <r00ster91@proton.me>
2022-12-07 18:00:52
behavior: add test coverage for slicing zero length array field of struct
Closes #11787
1 parent 7637ac5
Changed files (3)
lib
test
behavior
lib/std/segmented_list.zig
@@ -412,10 +412,7 @@ pub fn SegmentedList(comptime T: type, comptime prealloc_item_count: usize) type
 }
 
 test "SegmentedList basic usage" {
-    if (false) {
-        // https://github.com/ziglang/zig/issues/11787
-        try testSegmentedList(0);
-    }
+    try testSegmentedList(0);
     try testSegmentedList(1);
     try testSegmentedList(2);
     try testSegmentedList(4);
test/behavior/bugs/11787.zig
@@ -0,0 +1,20 @@
+const std = @import("std");
+const builtin = @import("builtin");
+const testing = std.testing;
+
+test "slicing zero length array field of struct" {
+    if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+
+    const S = struct {
+        a: [0]usize,
+        fn foo(self: *@This(), start: usize, end: usize) []usize {
+            return self.a[start..end];
+        }
+    };
+    var s: S = undefined;
+    try testing.expect(s.foo(0, 0).len == 0);
+}
test/behavior.zig
@@ -81,6 +81,7 @@ test {
     _ = @import("behavior/bugs/11179.zig");
     _ = @import("behavior/bugs/11181.zig");
     _ = @import("behavior/bugs/11213.zig");
+    _ = @import("behavior/bugs/11787.zig");
     _ = @import("behavior/bugs/11816.zig");
     _ = @import("behavior/bugs/12003.zig");
     _ = @import("behavior/bugs/12025.zig");