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.
11 #![feature(tool_lints)]
14 const THREE_BITS : i64 = 7;
15 const EVEN_MORE_REDIRECTION : i64 = THREE_BITS;
17 #[warn(clippy::bad_bit_mask)]
18 #[allow(clippy::ineffective_bit_mask, clippy::identity_op, clippy::no_effect, clippy::unnecessary_operation)]
23 x & 1 == 1; //ok, distinguishes bit 0
24 x & 1 == 0; //ok, compared with zero
26 x | 0 == 0; //ok, equals x == 0 (maybe warn?)
27 x | 1 == 3; //ok, equals x == 2 || x == 3
28 x | 3 == 3; //ok, equals x <= 3
32 x & 2 > 1; // ok, distinguishes x & 2 == 2 from x & 2 == 0
33 x & 2 < 1; // ok, distinguishes x & 2 == 2 from x & 2 == 0
34 x | 1 > 1; // ok (if a bit silly), equals x > 1
36 x | 2 <= 2; // ok (if a bit silly), equals x <= 2
38 x & 192 == 128; // ok, tests for bit 7 and not bit 6
39 x & 0xffc0 == 0xfe80; // ok
41 // this also now works with constants
43 x | EVEN_MORE_REDIRECTION < 7;
48 // and should now also match uncommon usage
53 x | 1 > 2; // no error, because we allowed ineffective bit masks
57 #[warn(clippy::ineffective_bit_mask)]
58 #[allow(clippy::bad_bit_mask, clippy::no_effect, clippy::unnecessary_operation)]
67 x | 1 > 2; // not an error (yet), better written as x >= 2
68 x | 1 >= 7; // not an error (yet), better written as x >= 6
69 x | 3 > 4; // not an error (yet), better written as x >= 4