rust/tests/ui/late-bound-lifetimes/downgraded_to_early_through...

25 lines
469 B
Rust

//@ check-pass
trait Gats<'a> {
type Assoc;
type Assoc2;
}
trait Trait: for<'a> Gats<'a> {
fn foo<'a>(_: &mut <Self as Gats<'a>>::Assoc) -> <Self as Gats<'a>>::Assoc2;
}
impl<'a> Gats<'a> for () {
type Assoc = &'a u32;
type Assoc2 = ();
}
type GatsAssoc<'a, T> = <T as Gats<'a>>::Assoc;
type GatsAssoc2<'a, T> = <T as Gats<'a>>::Assoc2;
impl Trait for () {
fn foo<'a>(_: &mut GatsAssoc<'a, Self>) -> GatsAssoc2<'a, Self> {}
}
fn main() {}