1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
// check-pass pub trait Foo { type Bar; } pub trait Broken { type Assoc; fn broken(&self) where Self::Assoc: Foo; } impl<T> Broken for T { type Assoc = (); fn broken(&self) where Self::Assoc: Foo { let _x: <Self::Assoc as Foo>::Bar; } } fn main() { let _m: &dyn Broken<Assoc=()> = &(); }