about summary refs log tree commit diff
path: root/tests/ui/traits/fn-pointer/hrtb-assoc-fn-traits-28994.rs
blob: e2f02053f959f858e47c36d60732a91bb764d71d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//@ check-pass
//! Tests that a HRTB + FnOnce bound involving an associated type don't prevent
//! a function pointer from implementing `Fn` traits.
//! Test for <https://github.com/rust-lang/rust/issues/28994>

trait LifetimeToType<'a> {
    type Out;
}

impl<'a> LifetimeToType<'a> for () {
    type Out = &'a ();
}

fn id<'a>(val: &'a ()) -> <() as LifetimeToType<'a>>::Out {
    val
}

fn assert_fn<F: for<'a> FnOnce(&'a ()) -> <() as LifetimeToType<'a>>::Out>(_func: F) { }

fn main() {
    assert_fn(id);
}