#![feature(tool_lints)] #![warn(clippy::invalid_upcast_comparisons)] #![allow(unused, clippy::eq_op, clippy::no_effect, clippy::unnecessary_operation, clippy::cast_lossless)] fn mk_value() -> T { unimplemented!() } fn main() { let u32: u32 = mk_value(); let u8: u8 = mk_value(); let i32: i32 = mk_value(); let i8: i8 = mk_value(); // always false, since no u8 can be > 300 (u8 as u32) > 300; (u8 as i32) > 300; (u8 as u32) == 300; (u8 as i32) == 300; 300 < (u8 as u32); 300 < (u8 as i32); 300 == (u8 as u32); 300 == (u8 as i32); // inverted of the above (u8 as u32) <= 300; (u8 as i32) <= 300; (u8 as u32) != 300; (u8 as i32) != 300; 300 >= (u8 as u32); 300 >= (u8 as i32); 300 != (u8 as u32); 300 != (u8 as i32); // always false, since u8 -> i32 doesn't wrap (u8 as i32) < 0; -5 != (u8 as i32); // inverted of the above (u8 as i32) >= 0; -5 == (u8 as i32); // always false, since no u8 can be 1337 1337 == (u8 as i32); 1337 == (u8 as u32); // inverted of the above 1337 != (u8 as i32); 1337 != (u8 as u32); // Those are Ok: (u8 as u32) > 20; 42 == (u8 as i32); 42 != (u8 as i32); 42 > (u8 as i32); (u8 as i32) == 42; (u8 as i32) != 42; (u8 as i32) > 42; (u8 as i32) < 42; (u8 as i8) == -1; (u8 as i8) != -1; (u8 as i32) > -1; (u8 as i32) < -1; (u32 as i32) < -5; (u32 as i32) < 10; (i8 as u8) == 1; (i8 as u8) != 1; (i8 as u8) < 1; (i8 as u8) > 1; (i32 as u32) < 5; (i32 as u32) < 10; -5 < (u32 as i32); 0 <= (u32 as i32); 0 < (u32 as i32); -5 > (u32 as i32); -5 >= (u8 as i32); -5 == (u32 as i32); }