2018-07-28 15:34:52 +00:00
|
|
|
#![warn(clippy::modulo_one)]
|
2022-06-04 11:34:07 +00:00
|
|
|
#![allow(clippy::no_effect, clippy::unnecessary_operation, clippy::identity_op)]
|
2015-05-31 12:17:31 +00:00
|
|
|
|
2019-09-09 15:01:01 +00:00
|
|
|
static STATIC_ONE: usize = 2 - 1;
|
2020-12-06 14:01:03 +00:00
|
|
|
static STATIC_NEG_ONE: i64 = 1 - 2;
|
2019-09-09 15:01:01 +00:00
|
|
|
|
2015-05-31 12:17:31 +00:00
|
|
|
fn main() {
|
2017-02-08 13:58:07 +00:00
|
|
|
10 % 1;
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: any number modulo 1 will be 0
|
|
|
|
//~| NOTE: `-D clippy::modulo-one` implied by `-D warnings`
|
2020-12-06 14:01:03 +00:00
|
|
|
10 % -1;
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: any number modulo -1 will panic/overflow or result in 0
|
2015-05-31 12:17:31 +00:00
|
|
|
10 % 2;
|
2023-08-24 19:32:12 +00:00
|
|
|
// also caught by rustc
|
|
|
|
i32::MIN % (-1);
|
|
|
|
//~^ ERROR: this operation will panic at runtime
|
|
|
|
//~| NOTE: `#[deny(unconditional_panic)]` on by default
|
|
|
|
//~| ERROR: any number modulo -1 will panic/overflow or result in 0
|
2019-09-09 15:01:01 +00:00
|
|
|
|
|
|
|
const ONE: u32 = 1 * 1;
|
2020-12-06 14:01:03 +00:00
|
|
|
const NEG_ONE: i64 = 1 - 2;
|
|
|
|
const INT_MIN: i64 = i64::MIN;
|
2019-09-09 15:01:01 +00:00
|
|
|
|
|
|
|
2 % ONE;
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: any number modulo 1 will be 0
|
|
|
|
// NOT caught by lint
|
|
|
|
5 % STATIC_ONE;
|
2020-12-06 14:01:03 +00:00
|
|
|
2 % NEG_ONE;
|
2023-08-24 19:32:12 +00:00
|
|
|
//~^ ERROR: any number modulo -1 will panic/overflow or result in 0
|
|
|
|
// NOT caught by lint
|
|
|
|
5 % STATIC_NEG_ONE;
|
|
|
|
// also caught by rustc
|
|
|
|
INT_MIN % NEG_ONE;
|
|
|
|
//~^ ERROR: this operation will panic at runtime
|
|
|
|
//~| ERROR: any number modulo -1 will panic/overflow or result in 0
|
2024-01-08 09:41:48 +00:00
|
|
|
// Not caught by lint, we don't look into static items, even if entirely immutable.
|
2023-08-24 19:32:12 +00:00
|
|
|
INT_MIN % STATIC_NEG_ONE;
|
2015-05-31 12:17:31 +00:00
|
|
|
}
|