1 #![feature(associated_type_bounds)]
7 trait Lam<Binder> { type App; }
11 impl<'a> Lam<&'a u8> for L1 { type App = u8; }
15 impl<'a, 'b> Lam<&'a &'b u8> for L2 { type App = u8; }
18 type A: Iterator<Item: Debug>;
19 //~^ ERROR `<<Self as Case1>::A as Iterator>::Item` doesn't implement `Debug`
21 type B: Iterator<Item: 'static>;
26 type A = Empty<String>;
30 // Ensure we don't have opaque `impl Trait` desugaring:
32 // What is this supposed to mean? Rustc currently lowers `: Default` in the
33 // bounds of `Out`, but trait selection can't find the bound since it applies
34 // to a type other than `Self::Out`.
35 pub trait Foo { type Out: Baz<Assoc: Default>; }
36 //~^ ERROR trait bound `<<Self as Foo>::Out as Baz>::Assoc: Default` is not satisfied
37 pub trait Baz { type Assoc; }
48 impl Foo for S6 { type Out = S4; }
49 impl Foo for S7 { type Out = S5; }
51 impl Baz for S4 { type Assoc = S2; }
52 impl Baz for S5 { type Assoc = S3; }