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