| #![warn(clippy::block_in_if_condition_expr)] |
| #![warn(clippy::block_in_if_condition_stmt)] |
| #![allow(unused, clippy::let_and_return)] |
| |
| fn predicate<F: FnOnce(T) -> bool, T>(pfn: F, val: T) -> bool { |
| pfn(val) |
| } |
| |
| fn pred_test() { |
| let v = 3; |
| let sky = "blue"; |
| // This is a sneaky case, where the block isn't directly in the condition, |
| // but is actually nside a closure that the condition is using. |
| // The same principle applies -- add some extra expressions to make sure |
| // linter isn't confused by them. |
| if v == 3 |
| && sky == "blue" |
| && predicate( |
| |x| { |
| let target = 3; |
| x == target |
| }, |
| v, |
| ) |
| {} |
| |
| if predicate( |
| |x| { |
| let target = 3; |
| x == target |
| }, |
| v, |
| ) {} |
| } |
| |
| fn closure_without_block() { |
| if predicate(|x| x == 3, 6) {} |
| } |
| |
| fn macro_in_closure() { |
| let option = Some(true); |
| |
| if option.unwrap_or_else(|| unimplemented!()) { |
| unimplemented!() |
| } |
| } |
| |
| fn main() {} |