It is related to #2592: ```rust struct Bar; struct Foo; trait A { type OutputA; } impl A for Bar { type OutputA = Foo; } trait B { type Output; fn foo() -> Self::Output; } impl<T:A> B for T { type Output = T::OutputA; fn foo() -> Self::Output { loop {} } } fn main() { let b = Bar::foo(); // <- b is unknown } ```