summaryrefslogtreecommitdiffstats
path: root/src/test/ui/polymorphization/closure_in_upvar/other.rs
blob: 27d59ec8899800cf9c3861eb734cfd2fed847f27 (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
// build-pass
// compile-flags:-Zpolymorphize=on -Csymbol-mangling-version=v0

fn y_uses_f(f: impl Fn()) {
    let x = |_: ()| ();

    let y = || {
        f();
        x(());
    };

    f();
    y();
}

fn x_uses_f(f: impl Fn()) {
    let x = |_: ()| { f(); };

    let y = || x(());

    f();
    y();
}

fn entry_a() {
    x_uses_f(|| ());
    y_uses_f(|| ());
}

fn entry_b() {
    x_uses_f(|| ());
    y_uses_f(|| ());
}

fn main() {
    entry_a();
    entry_b();
}