summaryrefslogtreecommitdiffstats
path: root/src/test/ui/generic-associated-types/construct_with_other_type.rs
blob: 5cb07f55883437b63bbfaf604667930f633c9467 (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

use std::ops::Deref;

trait Foo {
    type Bar<'a, 'b>;
}

trait Baz {
    type Quux<'a>: Foo where Self: 'a;

    // This weird type tests that we can use universal function call syntax to access the Item on
    type Baa<'a>: Deref<Target = <Self::Quux<'a> as Foo>::Bar<'a, 'static>>  where Self: 'a;
}

impl<T> Baz for T where T: Foo {
    type Quux<'a> = T where T: 'a;

    type Baa<'a> = &'a <T as Foo>::Bar<'a, 'static> where T: 'a;
}

fn main() {}