| ... | @@ -623,7 +623,10 @@ fn testDivFloor() void { | ... | @@ -623,7 +623,10 @@ fn testDivFloor() void { |
| 623 | | 623 | |
| 624 | pub fn divCeil(comptime T: type, numerator: T, denominator: T) !T { | 624 | pub fn divCeil(comptime T: type, numerator: T, denominator: T) !T { |
| 625 | @setRuntimeSafety(false); | 625 | @setRuntimeSafety(false); |
| 626 | if (denominator == 0) return error.DivisionByZero; | 626 | if (!(comptime std.meta.trait.isNumber(T))) |
| | 627 | @compileError("divCeil unsupported on " ++ @typeName(T)); |
| | 628 | if (denominator == 0) |
| | 629 | return error.DivisionByZero; |
| 627 | const info = @typeInfo(T); | 630 | const info = @typeInfo(T); |
| 628 | switch (info) { | 631 | switch (info) { |
| 629 | .ComptimeFloat, .Float => return @ceil(numerator / denominator), | 632 | .ComptimeFloat, .Float => return @ceil(numerator / denominator), |
| ... | @@ -637,7 +640,7 @@ pub fn divCeil(comptime T: type, numerator: T, denominator: T) !T { | ... | @@ -637,7 +640,7 @@ pub fn divCeil(comptime T: type, numerator: T, denominator: T) !T { |
| 637 | return @divFloor(numerator - 1, denominator) + 1; | 640 | return @divFloor(numerator - 1, denominator) + 1; |
| 638 | return @divTrunc(numerator, denominator); | 641 | return @divTrunc(numerator, denominator); |
| 639 | }, | 642 | }, |
| 640 | else => @compileError("divCeil unsupported on " ++ @typeName(T)), | 643 | else => unreachable, |
| 641 | } | 644 | } |
| 642 | } | 645 | } |
| 643 | | 646 | |