// run-rustfix #![allow(unused)] // for the fixed file trait Trait { type A; fn func(&self) -> Self::A; } struct S(T); impl S { fn foo<'a, T: Trait + 'a>(&self, _: impl Trait, x: impl Trait, _: T) { qux(x.func()) //~ ERROR mismatched types } fn ban(x: T) where T: Trait { qux(x.func()) //~ ERROR mismatched types } } fn foo<'a, T: Trait + 'a>(_: impl Trait, x: impl Trait, _: T) { qux(x.func()) //~ ERROR mismatched types } fn bar(x: T) { qux(x.func()) //~ ERROR mismatched types } fn foo2(x: impl Trait) { qux(x.func()) //~ ERROR mismatched types } fn bar2>(x: T) { qux(x.func()) //~ ERROR mismatched types } fn ban(x: T) where T: Trait { qux(x.func()) //~ ERROR mismatched types } fn qux(_: usize) {} fn main() {}