Fix Log2Int type construction

The following case for example, would previously fail:

    const a = u24(1) << Log2Int(u24)(22);
This commit is contained in:
Marc Tiehuis 2018-06-06 22:41:55 +12:00
parent d3693dca73
commit 212449bc23

View File

@ -306,7 +306,14 @@ test "math.rotl" {
}
pub fn Log2Int(comptime T: type) type {
return @IntType(false, log2(T.bit_count));
// comptime ceil log2
comptime var count: usize = 0;
comptime var s = T.bit_count - 1;
inline while (s != 0) : (s >>= 1) {
count += 1;
}
return @IntType(false, count);
}
test "math overflow functions" {