summaryrefslogtreecommitdiffstats
path: root/src/test/ui/late-bound-lifetimes/downgraded_to_early_through_alias.rs
blob: e56a34218e231c82d7f1c07e59cd449ee6706979 (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
// 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() {}