1 const THREE_BITS: i64 = 7;
2 const EVEN_MORE_REDIRECTION: i64 = THREE_BITS;
4 #[warn(clippy::bad_bit_mask)]
6 clippy::ineffective_bit_mask,
9 clippy::unnecessary_operation
15 x & 1 == 1; //ok, distinguishes bit 0
16 x & 1 == 0; //ok, compared with zero
18 x | 0 == 0; //ok, equals x == 0 (maybe warn?)
19 x | 1 == 3; //ok, equals x == 2 || x == 3
20 x | 3 == 3; //ok, equals x <= 3
24 x & 2 > 1; // ok, distinguishes x & 2 == 2 from x & 2 == 0
25 x & 2 < 1; // ok, distinguishes x & 2 == 2 from x & 2 == 0
26 x | 1 > 1; // ok (if a bit silly), equals x > 1
28 x | 2 <= 2; // ok (if a bit silly), equals x <= 2
30 x & 192 == 128; // ok, tests for bit 7 and not bit 6
31 x & 0xffc0 == 0xfe80; // ok
33 // this also now works with constants
35 x | EVEN_MORE_REDIRECTION < 7;
40 // and should now also match uncommon usage
45 x | 1 > 2; // no error, because we allowed ineffective bit masks
49 #[warn(clippy::ineffective_bit_mask)]
50 #[allow(clippy::bad_bit_mask, clippy::no_effect, clippy::unnecessary_operation)]
59 x | 1 > 2; // not an error (yet), better written as x >= 2
60 x | 1 >= 7; // not an error (yet), better written as x >= 6
61 x | 3 > 4; // not an error (yet), better written as x >= 4