about summary refs log tree commit diff
path: root/src/tools/clippy/tests/ui/map_flatten.rs
blob: 0970da8039a48de4aa5604b5052b14507276e6da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#![warn(clippy::map_flatten)]

//@no-rustfix
// issue #8506, multi-line
#[rustfmt::skip]
fn long_span() {
    let _: Option<i32> = Some(1)
        .map(|x| {
        //~^ map_flatten


            if x <= 5 {
                Some(x)
            } else {
                None
            }
        })
        .flatten();

    let _: Result<i32, i32> = Ok(1)
        .map(|x| {
        //~^ map_flatten

            if x == 1 {
                Ok(x)
            } else {
                Err(0)
            }
        })
        .flatten();

    let result: Result<i32, i32> = Ok(2);
    fn do_something() { }
    let _: Result<i32, i32> = result
        .map(|res| {
        //~^ map_flatten

            if res > 0 {
                do_something();
                Ok(res)
            } else {
                Err(0)
            }
        })
        .flatten();
        
    let _: Vec<_> = vec![5_i8; 6]
        .into_iter()
        .map(|some_value| {
        //~^ map_flatten

            if some_value > 3 {
                Some(some_value)
            } else {
                None
            }
        })
        .flatten()
        .collect();
}

#[allow(clippy::useless_vec)]
fn no_suggestion_if_comments_present() {
    let vec = vec![vec![1, 2, 3]];
    let _ = vec
        .iter()
        // a lovely comment explaining the code in very detail
        .map(|x| x.iter())
        //~^ map_flatten
        // the answer to life, the universe and everything could be here
        .flatten();
}

fn main() {
    long_span();
}