]> git.proxmox.com Git - rustc.git/blame - src/tools/clippy/tests/ui/checked_conversions.rs
New upstream version 1.63.0+dfsg1
[rustc.git] / src / tools / clippy / tests / ui / checked_conversions.rs
CommitLineData
f20569fa
XL
1// run-rustfix
2
3#![allow(
4 clippy::cast_lossless,
5 // Int::max_value will be deprecated in the future
6 deprecated,
7)]
8#![warn(clippy::checked_conversions)]
9
f20569fa
XL
10// Positive tests
11
12// Signed to unsigned
13
14pub fn i64_to_u32(value: i64) {
15 let _ = value <= (u32::max_value() as i64) && value >= 0;
16 let _ = value <= (u32::MAX as i64) && value >= 0;
17}
18
19pub fn i64_to_u16(value: i64) {
20 let _ = value <= i64::from(u16::max_value()) && value >= 0;
21 let _ = value <= i64::from(u16::MAX) && value >= 0;
22}
23
24pub fn isize_to_u8(value: isize) {
25 let _ = value <= (u8::max_value() as isize) && value >= 0;
26 let _ = value <= (u8::MAX as isize) && value >= 0;
27}
28
29// Signed to signed
30
31pub fn i64_to_i32(value: i64) {
32 let _ = value <= (i32::max_value() as i64) && value >= (i32::min_value() as i64);
33 let _ = value <= (i32::MAX as i64) && value >= (i32::MIN as i64);
34}
35
36pub fn i64_to_i16(value: i64) {
37 let _ = value <= i64::from(i16::max_value()) && value >= i64::from(i16::min_value());
38 let _ = value <= i64::from(i16::MAX) && value >= i64::from(i16::MIN);
39}
40
41// Unsigned to X
42
43pub fn u32_to_i32(value: u32) {
44 let _ = value <= i32::max_value() as u32;
45 let _ = value <= i32::MAX as u32;
46}
47
48pub fn usize_to_isize(value: usize) {
49 let _ = value <= isize::max_value() as usize && value as i32 == 5;
50 let _ = value <= isize::MAX as usize && value as i32 == 5;
51}
52
53pub fn u32_to_u16(value: u32) {
54 let _ = value <= u16::max_value() as u32 && value as i32 == 5;
55 let _ = value <= u16::MAX as u32 && value as i32 == 5;
56}
57
58// Negative tests
59
60pub fn no_i64_to_i32(value: i64) {
61 let _ = value <= (i32::max_value() as i64) && value >= 0;
62 let _ = value <= (i32::MAX as i64) && value >= 0;
63}
64
65pub fn no_isize_to_u8(value: isize) {
66 let _ = value <= (u8::max_value() as isize) && value >= (u8::min_value() as isize);
67 let _ = value <= (u8::MAX as isize) && value >= (u8::MIN as isize);
68}
69
70pub fn i8_to_u8(value: i8) {
71 let _ = value >= 0;
72}
73
923072b8
FG
74// Do not lint
75pub const fn issue_8898(i: u32) -> bool {
76 i <= i32::MAX as u32
77}
78
f20569fa 79fn main() {}