]> git.lizzy.rs Git - rust.git/blob - tests/ui/blocks_in_if_conditions_closure.rs
iterate List by value
[rust.git] / tests / ui / blocks_in_if_conditions_closure.rs
1 #![warn(clippy::blocks_in_if_conditions)]
2 #![allow(unused, clippy::let_and_return)]
3
4 fn predicate<F: FnOnce(T) -> bool, T>(pfn: F, val: T) -> bool {
5     pfn(val)
6 }
7
8 fn pred_test() {
9     let v = 3;
10     let sky = "blue";
11     // This is a sneaky case, where the block isn't directly in the condition,
12     // but is actually inside a closure that the condition is using.
13     // The same principle applies -- add some extra expressions to make sure
14     // linter isn't confused by them.
15     if v == 3
16         && sky == "blue"
17         && predicate(
18             |x| {
19                 let target = 3;
20                 x == target
21             },
22             v,
23         )
24     {}
25
26     if predicate(
27         |x| {
28             let target = 3;
29             x == target
30         },
31         v,
32     ) {}
33 }
34
35 fn closure_without_block() {
36     if predicate(|x| x == 3, 6) {}
37 }
38
39 fn macro_in_closure() {
40     let option = Some(true);
41
42     if option.unwrap_or_else(|| unimplemented!()) {
43         unimplemented!()
44     }
45 }
46
47 fn main() {}