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

parser: make let shift operators work with all types

This commit is contained in:
Alvydas Vitkauskas
2019-11-06 00:02:50 +02:00
committed by Alexander Medvednikov
parent 1b5f724df0
commit 3080959084
5 changed files with 56 additions and 10 deletions

View File

@ -0,0 +1,33 @@
fn test_shift_operators() {
// check that shift works with all integer types
// as the right-hand side operand
a := 1
b := 1024
i := 10
assert b == a << i8(i)
assert b == a << byte(i)
assert b == a << i16(i)
assert b == a << u16(i)
assert b == a << int(i)
assert b == a << u32(i)
assert b == a << i64(i)
assert b == a << u64(i)
assert a == b >> i8(i)
assert a == b >> byte(i)
assert a == b >> i16(i)
assert a == b >> u16(i)
assert a == b >> int(i)
assert a == b >> u32(i)
assert a == b >> i64(i)
assert a == b >> u64(i)
// check that shift operation result type is
// the same as the type of the left-hand side operand
mut c := u64(0)
d := u64(1)
c = d << i8(63)
assert c == 9223372036854775808
}