Skip to content

Commit 75f8c04

Browse files
committed
behavior: add test coverage for slicing zero length array field of struct
Closes #11787
1 parent 7637ac5 commit 75f8c04

File tree

3 files changed

+22
-4
lines changed

3 files changed

+22
-4
lines changed

lib/std/segmented_list.zig

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -412,10 +412,7 @@ pub fn SegmentedList(comptime T: type, comptime prealloc_item_count: usize) type
412412
}
413413

414414
test "SegmentedList basic usage" {
415-
if (false) {
416-
// https://github.com/ziglang/zig/issues/11787
417-
try testSegmentedList(0);
418-
}
415+
try testSegmentedList(0);
419416
try testSegmentedList(1);
420417
try testSegmentedList(2);
421418
try testSegmentedList(4);

test/behavior.zig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ test {
8181
_ = @import("behavior/bugs/11179.zig");
8282
_ = @import("behavior/bugs/11181.zig");
8383
_ = @import("behavior/bugs/11213.zig");
84+
_ = @import("behavior/bugs/11787.zig");
8485
_ = @import("behavior/bugs/11816.zig");
8586
_ = @import("behavior/bugs/12003.zig");
8687
_ = @import("behavior/bugs/12025.zig");

test/behavior/bugs/11787.zig

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
const std = @import("std");
2+
const builtin = @import("builtin");
3+
const testing = std.testing;
4+
5+
test "slicing zero length array field of struct" {
6+
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
7+
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
8+
if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
9+
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10+
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11+
12+
const S = struct {
13+
a: [0]usize,
14+
fn foo(self: *@This(), start: usize, end: usize) []usize {
15+
return self.a[start..end];
16+
}
17+
};
18+
var s: S = undefined;
19+
try testing.expect(s.foo(0, 0).len == 0);
20+
}

0 commit comments

Comments
 (0)