]> git.lizzy.rs Git - rust.git/blob - tests/ui/lint/lint-type-overflow.rs
Auto merge of #106884 - clubby789:fieldless-enum-debug, r=michaelwoerister
[rust.git] / tests / ui / lint / lint-type-overflow.rs
1 #![deny(overflowing_literals)]
2
3 fn test(x: i8) {
4     println!("x {}", x);
5 }
6
7 #[allow(unused_variables)]
8 fn main() {
9     let x1: u8 = 255; // should be OK
10     let x1: u8 = 256; //~ error: literal out of range for `u8`
11
12     let x1 = 255_u8; // should be OK
13     let x1 = 256_u8; //~ error: literal out of range for `u8`
14
15     let x2: i8 = -128; // should be OK
16     let x1: i8 = 128; //~ error: literal out of range for `i8`
17
18     let x3: i8 = -129; //~ error: literal out of range for `i8`
19     let x3: i8 = -(129); //~ error: literal out of range for `i8`
20     let x3: i8 = -{129}; //~ error: literal out of range for `i8`
21
22     test(1000); //~ error: literal out of range for `i8`
23
24     let x = 128_i8; //~ error: literal out of range for `i8`
25     let x = 127_i8;
26     let x = -128_i8;
27     let x = -(128_i8);
28     let x = -129_i8; //~ error: literal out of range for `i8`
29
30     let x: i32 = 2147483647; // should be OK
31     let x = 2147483647_i32; // should be OK
32     let x: i32 = 2147483648; //~ error: literal out of range for `i32`
33     let x = 2147483648_i32; //~ error: literal out of range for `i32`
34     let x: i32 = -2147483648; // should be OK
35     let x = -2147483648_i32; // should be OK
36     let x: i32 = -2147483649; //~ error: literal out of range for `i32`
37     let x = -2147483649_i32; //~ error: literal out of range for `i32`
38     let x = 2147483648; //~ error: literal out of range for `i32`
39
40     let x = 9223372036854775808_i64; //~ error: literal out of range for `i64`
41     let x = -9223372036854775808_i64; // should be OK
42     let x = 18446744073709551615_i64; //~ error: literal out of range for `i64`
43     let x: i64 = -9223372036854775809; //~ error: literal out of range for `i64`
44     let x = -9223372036854775809_i64; //~ error: literal out of range for `i64`
45 }