behavior: add test coverage for slicing zero length array field of struct

Closes #11787
This commit is contained in:
r00ster91 2022-12-07 18:00:52 +01:00
parent 7637ac584f
commit 75f8c04d6d
3 changed files with 22 additions and 4 deletions

View File

@ -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);

View File

@ -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");

View File

@ -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);
}