diff options
Diffstat (limited to 'tests/ui/generic-associated-types/construct_with_other_type.rs')
-rw-r--r-- | tests/ui/generic-associated-types/construct_with_other_type.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/ui/generic-associated-types/construct_with_other_type.rs b/tests/ui/generic-associated-types/construct_with_other_type.rs new file mode 100644 index 000000000..5cb07f558 --- /dev/null +++ b/tests/ui/generic-associated-types/construct_with_other_type.rs @@ -0,0 +1,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() {} |