blob: a059b940e66b55e329e49ba8d7ffc4b35425f3be [file] [log] [blame]
//@ check-pass
#![feature(associated_type_bounds)]
trait TraitA<'a> {
type AsA;
}
trait TraitB<'a, 'b> {
type AsB;
}
trait TraitC<'a, 'b, 'c> {}
struct X;
impl<'a, 'b, 'c> TraitC<'a, 'b, 'c> for X {}
struct Y;
impl<'a, 'b> TraitB<'a, 'b> for Y {
type AsB = X;
}
struct Z;
impl<'a> TraitA<'a> for Z {
type AsA = Y;
}
fn foo<T>()
where
for<'a> T: TraitA<'a, AsA: for<'b> TraitB<'a, 'b, AsB: for<'c> TraitC<'a, 'b, 'c>>>,
{
}
fn main() {
foo::<Z>();
}