summaryrefslogtreecommitdiffstats
path: root/src/test/ui/polymorphization/drop_shims/transitive.rs
blob: c22891171091ab38bb47484d2e3b7be648e92487 (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
// check-pass
// compile-flags:-Zpolymorphize=on

pub struct OnDrop<F: Fn()>(pub F);

impl<F: Fn()> Drop for OnDrop<F> {
    fn drop(&mut self) { }
}

fn bar<F: FnOnce()>(f: F) {
    let _ = OnDrop(|| ());
    f()
}

fn foo<R, S: FnOnce()>(
    _: R,
    _: S,
) {
    let bar = || {
        bar(|| {})
    };
    let _ = bar();
}

fn main() {
    foo(3u32, || {});
}