summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/tests/ui/branches_sharing_code/false_positives.rs
blob: 5e3a1a29693f58ae5e392e222d6fb9b467216ee3 (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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#![allow(dead_code)]
#![deny(clippy::if_same_then_else, clippy::branches_sharing_code)]

use std::sync::Mutex;

// ##################################
// # Issue clippy#7369
// ##################################
#[derive(Debug)]
pub struct FooBar {
    foo: Vec<u32>,
}

impl FooBar {
    pub fn bar(&mut self) {
        if true {
            self.foo.pop();
        } else {
            self.baz();

            self.foo.pop();

            self.baz()
        }
    }

    fn baz(&mut self) {}
}

fn foo(x: u32, y: u32) -> u32 {
    x / y
}

fn main() {
    let x = (1, 2);
    let _ = if true {
        let (x, y) = x;
        foo(x, y)
    } else {
        let (y, x) = x;
        foo(x, y)
    };

    let m = Mutex::new(0u32);
    let l = m.lock().unwrap();
    let _ = if true {
        drop(l);
        println!("foo");
        m.lock().unwrap();
        0
    } else if *l == 0 {
        drop(l);
        println!("foo");
        println!("bar");
        m.lock().unwrap();
        1
    } else {
        drop(l);
        println!("foo");
        println!("baz");
        m.lock().unwrap();
        2
    };

    if true {
        let _guard = m.lock();
        println!("foo");
    } else {
        println!("foo");
    }

    if true {
        let _guard = m.lock();
        println!("foo");
        println!("bar");
    } else {
        let _guard = m.lock();
        println!("foo");
        println!("baz");
    }

    let mut c = 0;
    for _ in 0..5 {
        if c == 0 {
            c += 1;
            println!("0");
        } else if c == 1 {
            c += 1;
            println!("1");
        } else {
            c += 1;
            println!("more");
        }
    }
}