From ee6a52b40f9836beb0d35820d1987f3c7e522f45 Mon Sep 17 00:00:00 2001 From: gooncreeper <149842806+gooncreeper@users.noreply.github.com> Date: Sun, 14 Jul 2024 00:56:29 +0000 Subject: [PATCH] std.ArrayList.unusedCapacitySlice: Return unaligned slice (#20490) --- lib/std/array_list.zig | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/std/array_list.zig b/lib/std/array_list.zig index 29902db34f..7b93668c5c 100644 --- a/lib/std/array_list.zig +++ b/lib/std/array_list.zig @@ -566,7 +566,7 @@ pub fn ArrayListAligned(comptime T: type, comptime alignment: ?u29) type { /// This can be useful for writing directly into an ArrayList. /// Note that such an operation must be followed up with a direct /// modification of `self.items.len`. - pub fn unusedCapacitySlice(self: Self) Slice { + pub fn unusedCapacitySlice(self: Self) []T { return self.allocatedSlice()[self.items.len..]; } @@ -1193,7 +1193,7 @@ pub fn ArrayListAlignedUnmanaged(comptime T: type, comptime alignment: ?u29) typ /// This can be useful for writing directly into an ArrayList. /// Note that such an operation must be followed up with a direct /// modification of `self.items.len`. - pub fn unusedCapacitySlice(self: Self) Slice { + pub fn unusedCapacitySlice(self: Self) []T { return self.allocatedSlice()[self.items.len..]; } @@ -2242,3 +2242,10 @@ test "return OutOfMemory when capacity would exceed maximum usize integer value" try testing.expectError(error.OutOfMemory, list.ensureUnusedCapacity(2)); } } + +test "ArrayListAligned with non-native alignment compiles unusedCapabitySlice" { + var list = ArrayListAligned(u8, 4).init(testing.allocator); + defer list.deinit(); + try list.appendNTimes(1, 4); + _ = list.unusedCapacitySlice(); +}