summaryrefslogtreecommitdiffstats
path: root/src/test/ui/lint/lint-type-overflow.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
commit698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch)
tree173a775858bd501c378080a10dca74132f05bc50 /src/test/ui/lint/lint-type-overflow.rs
parentInitial commit. (diff)
downloadrustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz
rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/lint/lint-type-overflow.rs')
-rw-r--r--src/test/ui/lint/lint-type-overflow.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/test/ui/lint/lint-type-overflow.rs b/src/test/ui/lint/lint-type-overflow.rs
new file mode 100644
index 000000000..9672da6d3
--- /dev/null
+++ b/src/test/ui/lint/lint-type-overflow.rs
@@ -0,0 +1,45 @@
+#![deny(overflowing_literals)]
+
+fn test(x: i8) {
+ println!("x {}", x);
+}
+
+#[allow(unused_variables)]
+fn main() {
+ let x1: u8 = 255; // should be OK
+ let x1: u8 = 256; //~ error: literal out of range for `u8`
+
+ let x1 = 255_u8; // should be OK
+ let x1 = 256_u8; //~ error: literal out of range for `u8`
+
+ let x2: i8 = -128; // should be OK
+ let x1: i8 = 128; //~ error: literal out of range for `i8`
+
+ let x3: i8 = -129; //~ error: literal out of range for `i8`
+ let x3: i8 = -(129); //~ error: literal out of range for `i8`
+ let x3: i8 = -{129}; //~ error: literal out of range for `i8`
+
+ test(1000); //~ error: literal out of range for `i8`
+
+ let x = 128_i8; //~ error: literal out of range for `i8`
+ let x = 127_i8;
+ let x = -128_i8;
+ let x = -(128_i8);
+ let x = -129_i8; //~ error: literal out of range for `i8`
+
+ let x: i32 = 2147483647; // should be OK
+ let x = 2147483647_i32; // should be OK
+ let x: i32 = 2147483648; //~ error: literal out of range for `i32`
+ let x = 2147483648_i32; //~ error: literal out of range for `i32`
+ let x: i32 = -2147483648; // should be OK
+ let x = -2147483648_i32; // should be OK
+ let x: i32 = -2147483649; //~ error: literal out of range for `i32`
+ let x = -2147483649_i32; //~ error: literal out of range for `i32`
+ let x = 2147483648; //~ error: literal out of range for `i32`
+
+ let x = 9223372036854775808_i64; //~ error: literal out of range for `i64`
+ let x = -9223372036854775808_i64; // should be OK
+ let x = 18446744073709551615_i64; //~ error: literal out of range for `i64`
+ let x: i64 = -9223372036854775809; //~ error: literal out of range for `i64`
+ let x = -9223372036854775809_i64; //~ error: literal out of range for `i64`
+}