2018-07-28 15:34:52 +00:00
|
|
|
#![warn(clippy::absurd_extreme_comparisons)]
|
2018-12-09 22:26:16 +00:00
|
|
|
#![allow(
|
|
|
|
unused,
|
|
|
|
clippy::eq_op,
|
|
|
|
clippy::no_effect,
|
|
|
|
clippy::unnecessary_operation,
|
|
|
|
clippy::needless_pass_by_value
|
|
|
|
)]
|
2016-12-21 15:49:53 +00:00
|
|
|
|
2018-12-08 17:56:59 +00:00
|
|
|
#[rustfmt::skip]
|
2016-02-03 03:48:52 +00:00
|
|
|
fn main() {
|
|
|
|
const Z: u32 = 0;
|
|
|
|
let u: u32 = 42;
|
2016-06-07 16:32:26 +00:00
|
|
|
u <= 0;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2016-06-07 16:32:26 +00:00
|
|
|
u <= Z;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2016-06-07 16:32:26 +00:00
|
|
|
u < Z;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2016-06-07 16:32:26 +00:00
|
|
|
Z >= u;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2016-06-07 16:32:26 +00:00
|
|
|
Z > u;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2020-04-07 22:04:33 +00:00
|
|
|
u > u32::MAX;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2020-04-07 22:04:33 +00:00
|
|
|
u >= u32::MAX;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2020-04-07 22:04:33 +00:00
|
|
|
u32::MAX < u;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2020-04-07 22:04:33 +00:00
|
|
|
u32::MAX <= u;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2016-02-03 03:48:52 +00:00
|
|
|
1-1 > u;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2016-02-03 03:48:52 +00:00
|
|
|
u >= !0;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2016-02-03 03:48:52 +00:00
|
|
|
u <= 12 - 2*6;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2016-02-03 03:48:52 +00:00
|
|
|
let i: i8 = 0;
|
2016-06-07 16:32:26 +00:00
|
|
|
i < -127 - 1;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2020-04-07 22:04:33 +00:00
|
|
|
i8::MAX >= i;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2020-04-07 22:04:33 +00:00
|
|
|
3-7 < i32::MIN;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2016-02-03 03:48:52 +00:00
|
|
|
let b = false;
|
2016-06-07 16:32:26 +00:00
|
|
|
b >= true;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2016-06-07 16:32:26 +00:00
|
|
|
false > b;
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: this comparison involving the minimum or maximum element for this type con
|
2016-02-03 03:48:52 +00:00
|
|
|
u > 0; // ok
|
2018-07-28 15:34:52 +00:00
|
|
|
// this is handled by clippy::unit_cmp
|
2017-02-08 13:58:07 +00:00
|
|
|
() < {};
|
2023-07-28 19:35:48 +00:00
|
|
|
//~^ ERROR: <-comparison of unit values detected. This will always be false
|
|
|
|
//~| NOTE: `#[deny(clippy::unit_cmp)]` on by default
|
2016-02-03 03:48:52 +00:00
|
|
|
}
|
2016-12-21 15:49:53 +00:00
|
|
|
|
|
|
|
use std::cmp::{Ordering, PartialEq, PartialOrd};
|
|
|
|
|
2022-05-06 07:10:11 +00:00
|
|
|
#[derive(PartialEq, Eq, PartialOrd)]
|
2016-12-21 15:49:53 +00:00
|
|
|
pub struct U(u64);
|
|
|
|
|
|
|
|
impl PartialEq<u32> for U {
|
|
|
|
fn eq(&self, other: &u32) -> bool {
|
2017-08-29 12:48:19 +00:00
|
|
|
self.eq(&U(u64::from(*other)))
|
2016-12-21 15:49:53 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
impl PartialOrd<u32> for U {
|
|
|
|
fn partial_cmp(&self, other: &u32) -> Option<Ordering> {
|
2017-08-29 12:48:19 +00:00
|
|
|
self.partial_cmp(&U(u64::from(*other)))
|
2016-12-21 15:49:53 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn foo(val: U) -> bool {
|
2020-04-07 22:04:33 +00:00
|
|
|
val > u32::MAX
|
2016-12-21 15:49:53 +00:00
|
|
|
}
|
2018-01-12 17:24:24 +00:00
|
|
|
|
|
|
|
pub fn bar(len: u64) -> bool {
|
|
|
|
// This is OK as we are casting from target sized to fixed size
|
2020-04-07 22:04:33 +00:00
|
|
|
len >= usize::MAX as u64
|
2018-01-12 17:24:24 +00:00
|
|
|
}
|