#![warn(clippy::modulo_arithmetic)] #![allow( clippy::no_effect, clippy::unnecessary_operation, clippy::modulo_one, clippy::identity_op )] fn main() { // Lint when both sides are const and of the opposite sign -1 % 2; //~^ ERROR: you are using modulo operator on constants with different signs: `-1 % 2` //~| NOTE: double check for expected result especially when interoperating with differ 1 % -2; //~^ ERROR: you are using modulo operator on constants with different signs: `1 % -2` //~| NOTE: double check for expected result especially when interoperating with differ (1 - 2) % (1 + 2); //~^ ERROR: you are using modulo operator on constants with different signs: `-1 % 3` //~| NOTE: double check for expected result especially when interoperating with differ (1 + 2) % (1 - 2); //~^ ERROR: you are using modulo operator on constants with different signs: `3 % -1` //~| NOTE: double check for expected result especially when interoperating with differ 35 * (7 - 4 * 2) % (-500 * -600); //~^ ERROR: you are using modulo operator on constants with different signs: `-35 % 30 //~| NOTE: double check for expected result especially when interoperating with differ -1i8 % 2i8; //~^ ERROR: you are using modulo operator on constants with different signs: `-1 % 2` //~| NOTE: double check for expected result especially when interoperating with differ 1i8 % -2i8; //~^ ERROR: you are using modulo operator on constants with different signs: `1 % -2` //~| NOTE: double check for expected result especially when interoperating with differ -1i16 % 2i16; //~^ ERROR: you are using modulo operator on constants with different signs: `-1 % 2` //~| NOTE: double check for expected result especially when interoperating with differ 1i16 % -2i16; //~^ ERROR: you are using modulo operator on constants with different signs: `1 % -2` //~| NOTE: double check for expected result especially when interoperating with differ -1i32 % 2i32; //~^ ERROR: you are using modulo operator on constants with different signs: `-1 % 2` //~| NOTE: double check for expected result especially when interoperating with differ 1i32 % -2i32; //~^ ERROR: you are using modulo operator on constants with different signs: `1 % -2` //~| NOTE: double check for expected result especially when interoperating with differ -1i64 % 2i64; //~^ ERROR: you are using modulo operator on constants with different signs: `-1 % 2` //~| NOTE: double check for expected result especially when interoperating with differ 1i64 % -2i64; //~^ ERROR: you are using modulo operator on constants with different signs: `1 % -2` //~| NOTE: double check for expected result especially when interoperating with differ -1i128 % 2i128; //~^ ERROR: you are using modulo operator on constants with different signs: `-1 % 2` //~| NOTE: double check for expected result especially when interoperating with differ 1i128 % -2i128; //~^ ERROR: you are using modulo operator on constants with different signs: `1 % -2` //~| NOTE: double check for expected result especially when interoperating with differ -1isize % 2isize; //~^ ERROR: you are using modulo operator on constants with different signs: `-1 % 2` //~| NOTE: double check for expected result especially when interoperating with differ 1isize % -2isize; //~^ ERROR: you are using modulo operator on constants with different signs: `1 % -2` //~| NOTE: double check for expected result especially when interoperating with differ // No lint when both sides are const and of the same sign 1 % 2; -1 % -2; (1 + 2) % (-1 + 2); (-1 - 2) % (1 - 2); 1u8 % 2u8; 1u16 % 2u16; 1u32 % 2u32; 1u64 % 2u64; 1u128 % 2u128; 1usize % 2usize; }