1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

expression: set integer literals as int by default

This commit is contained in:
SleepyRoy
2020-03-24 03:05:37 +08:00
committed by GitHub
parent 5c9cbae10d
commit 67ba56c65c
14 changed files with 788 additions and 793 deletions

View File

@@ -4,10 +4,10 @@
module math
const (
uvnan = 0x7FF8000000000001
uvinf = 0x7FF0000000000000
uvneginf = 0xFFF0000000000000
uvone = 0x3FF0000000000000
uvnan = u64(0x7FF8000000000001)
uvinf = u64(0x7FF0000000000000)
uvneginf = u64(0xFFF0000000000000)
uvone = u64(0x3FF0000000000000)
mask = 0x7FF
shift = 64 - 11 - 1
bias = 1023

View File

@@ -9,7 +9,7 @@ const (
de_bruijn32tab = [byte(0), 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9,
]
de_bruijn64 = (0x03f79d71b4ca8b09)
de_bruijn64 = u64(0x03f79d71b4ca8b09)
de_bruijn64tab = [byte(0), 1, 56, 2, 57, 49, 28, 3, 61, 58, 42, 50, 38, 29, 17, 4,
62, 47, 59, 36, 45, 43, 51, 22, 53, 39, 33, 30, 24, 18, 12, 5,
63, 55, 48, 27, 60, 41, 37, 16, 46, 35, 44, 21, 52, 32, 23, 11,
@@ -18,17 +18,17 @@ const (
)
const (
m0 = 0x5555555555555555 // 01010101 ...
m1 = 0x3333333333333333 // 00110011 ...
m2 = 0x0f0f0f0f0f0f0f0f // 00001111 ...
m3 = 0x00ff00ff00ff00ff // etc.
m4 = 0x0000ffff0000ffff
m0 = u64(0x5555555555555555) // 01010101 ...
m1 = u64(0x3333333333333333) // 00110011 ...
m2 = u64(0x0f0f0f0f0f0f0f0f) // 00001111 ...
m3 = u64(0x00ff00ff00ff00ff) // etc.
m4 = u64(0x0000ffff0000ffff)
)
const (
// save importing math mod just for these
max_u32 = 4294967295
max_u64 = 18446744073709551615
max_u32 = u32(4294967295)
max_u64 = u64(18446744073709551615)
)
// --- LeadingZeros ---
@@ -371,7 +371,7 @@ pub fn sub_64(x u64, y u64, borrow u64) (u64, u64) {
// --- Full-width multiply ---
const (
two32 = 0x1_0000_0000
two32 = u64(0x1_0000_0000)
mask32 = two32 - 1
overflow_error = "Overflow Error"
divide_error = "Divide Error"

View File

@@ -277,7 +277,7 @@ fn test_bits(){
for x in 0..62 {
hi := u64(i) << x
lo := u64(2) //hi - 1
y := 0x4000_0000_0000_0000
y := u64(0x4000_0000_0000_0000)
quo, rem := div_64(hi, lo, y)
//C.printf("[%016llx_%016llx] %016llx (%016llx,%016llx)\n", hi, lo, y, quo, rem)
assert quo == u64(2)<<(x+1)

View File

@@ -38,11 +38,11 @@ pub const (
// -9223372036854775808 is wrong because C compilers parse litteral values
// without sign first, and 9223372036854775808 overflows i64, hence the
// consecutive subtraction by 1
min_i64 = -9223372036854775807 - 1
max_i64 = 9223372036854775807
min_i64 = i64(-9223372036854775807 - 1)
max_i64 = i64(9223372036854775807)
max_u8 = 255
max_u16 = 65535
max_u32 = 4294967295
max_u64 = 18446744073709551615
max_u32 = u32(4294967295)
max_u64 = u64(18446744073709551615)
)