Skip to content

Commit e69fd4d

Browse files
authored
Merge pull request #17762 from ziglang/zir-index-type-safety
make Zir.Inst.Index typed
2 parents 256ab68 + 62f45b8 commit e69fd4d

File tree

8 files changed

+1033
-941
lines changed

8 files changed

+1033
-941
lines changed

lib/std/mem.zig

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3527,21 +3527,33 @@ test "max" {
35273527
/// Finds the smallest and largest number in a slice. O(n).
35283528
/// Returns an anonymous struct with the fields `min` and `max`.
35293529
/// `slice` must not be empty.
3530-
pub fn minMax(comptime T: type, slice: []const T) struct { min: T, max: T } {
3530+
pub fn minMax(comptime T: type, slice: []const T) struct { T, T } {
35313531
assert(slice.len > 0);
3532-
var minVal = slice[0];
3533-
var maxVal = slice[0];
3532+
var running_minimum = slice[0];
3533+
var running_maximum = slice[0];
35343534
for (slice[1..]) |item| {
3535-
minVal = @min(minVal, item);
3536-
maxVal = @max(maxVal, item);
3535+
running_minimum = @min(running_minimum, item);
3536+
running_maximum = @max(running_maximum, item);
35373537
}
3538-
return .{ .min = minVal, .max = maxVal };
3538+
return .{ running_minimum, running_maximum };
35393539
}
35403540

3541-
test "minMax" {
3542-
try testing.expectEqual(minMax(u8, "abcdefg"), .{ .min = 'a', .max = 'g' });
3543-
try testing.expectEqual(minMax(u8, "bcdefga"), .{ .min = 'a', .max = 'g' });
3544-
try testing.expectEqual(minMax(u8, "a"), .{ .min = 'a', .max = 'a' });
3541+
test minMax {
3542+
{
3543+
const actual_min, const actual_max = minMax(u8, "abcdefg");
3544+
try testing.expectEqual(@as(u8, 'a'), actual_min);
3545+
try testing.expectEqual(@as(u8, 'g'), actual_max);
3546+
}
3547+
{
3548+
const actual_min, const actual_max = minMax(u8, "bcdefga");
3549+
try testing.expectEqual(@as(u8, 'a'), actual_min);
3550+
try testing.expectEqual(@as(u8, 'g'), actual_max);
3551+
}
3552+
{
3553+
const actual_min, const actual_max = minMax(u8, "a");
3554+
try testing.expectEqual(@as(u8, 'a'), actual_min);
3555+
try testing.expectEqual(@as(u8, 'a'), actual_max);
3556+
}
35453557
}
35463558

35473559
/// Returns the index of the smallest number in a slice. O(n).

src/AstGen.zig

Lines changed: 182 additions & 175 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)