// check-pass
#![allow(dead_code)]
// pretty-expanded FIXME #23616

trait T0 {
    type O;
    fn dummy(&self) { }
}

struct S<A>(A);
impl<A> T0 for S<A> { type O = A; }

trait T1: T0 {
    // this looks okay but as we see below, `f` is unusable
    fn m0<F: Fn(<Self as T0>::O) -> bool>(self, f: F) -> bool;
}

// complains about mismatched types: <S<A> as T0>::O vs. A
impl<A> T1 for S<A>
{
    fn m0<F: Fn(<Self as T0>::O) -> bool>(self, f: F) -> bool { f(self.0) }
}

fn main() { }
