| #![warn(clippy::precedence)] | |
| #![allow( | |
| unused_must_use, | |
| clippy::no_effect, | |
| clippy::unnecessary_operation, | |
| clippy::clone_on_copy, | |
| clippy::identity_op, | |
| clippy::eq_op | |
| )] | |
| macro_rules! trip { | |
| ($a:expr) => { | |
| match $a & 0b1111_1111u8 { | |
| 0 => println!("a is zero ({})", $a), | |
| _ => println!("a is {}", $a), | |
| } | |
| }; | |
| } | |
| fn main() { | |
| 1 << (2 + 3); | |
| //~^ precedence | |
| (1 + 2) << 3; | |
| //~^ precedence | |
| 4 >> (1 + 1); | |
| //~^ precedence | |
| (1 + 3) >> 2; | |
| //~^ precedence | |
| 1 ^ (1 - 1); | |
| //~^ precedence | |
| 3 | (2 - 1); | |
| //~^ precedence | |
| 3 & (5 - 2); | |
| //~^ precedence | |
| 0x0F00 & 0x00F0 << 4; | |
| 0x0F00 & 0xF000 >> 4; | |
| 0x0F00 << 1 ^ 3; | |
| 0x0F00 << 1 | 2; | |
| let b = 3; | |
| trip!(b * 8); | |
| } | |
| struct W(u8); | |
| impl Clone for W { | |
| fn clone(&self) -> Self { | |
| W(1) | |
| } | |
| } | |
| fn closure_method_call() { | |
| // Do not lint when the method call is applied to the block, both inside the closure | |
| let f = |x: W| { x }.clone(); | |
| assert!(matches!(f(W(0)), W(1))); | |
| let f = (|x: W| -> _ { x }).clone(); | |
| assert!(matches!(f(W(0)), W(0))); | |
| //~^^ precedence | |
| let f = (move |x: W| -> _ { x }).clone(); | |
| assert!(matches!(f(W(0)), W(0))); | |
| //~^^ precedence | |
| } |