1 // Copyright 2014-2018 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution.
4 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
5 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
6 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
7 // option. This file may not be copied, modified, or distributed
8 // except according to those terms.
10 const THREE_BITS: i64 = 7;
11 const EVEN_MORE_REDIRECTION: i64 = THREE_BITS;
13 #[warn(clippy::bad_bit_mask)]
15 clippy::ineffective_bit_mask,
18 clippy::unnecessary_operation
24 x & 1 == 1; //ok, distinguishes bit 0
25 x & 1 == 0; //ok, compared with zero
27 x | 0 == 0; //ok, equals x == 0 (maybe warn?)
28 x | 1 == 3; //ok, equals x == 2 || x == 3
29 x | 3 == 3; //ok, equals x <= 3
33 x & 2 > 1; // ok, distinguishes x & 2 == 2 from x & 2 == 0
34 x & 2 < 1; // ok, distinguishes x & 2 == 2 from x & 2 == 0
35 x | 1 > 1; // ok (if a bit silly), equals x > 1
37 x | 2 <= 2; // ok (if a bit silly), equals x <= 2
39 x & 192 == 128; // ok, tests for bit 7 and not bit 6
40 x & 0xffc0 == 0xfe80; // ok
42 // this also now works with constants
44 x | EVEN_MORE_REDIRECTION < 7;
49 // and should now also match uncommon usage
54 x | 1 > 2; // no error, because we allowed ineffective bit masks
58 #[warn(clippy::ineffective_bit_mask)]
59 #[allow(clippy::bad_bit_mask, clippy::no_effect, clippy::unnecessary_operation)]
68 x | 1 > 2; // not an error (yet), better written as x >= 2
69 x | 1 >= 7; // not an error (yet), better written as x >= 6
70 x | 3 > 4; // not an error (yet), better written as x >= 4