rust/tests/ui/polymorphization/drop_shims/transitive.rs

28 lines
360 B
Rust
Raw Normal View History

// 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(|| {})
};
bar();
}
fn main() {
foo(3u32, || {});
}