#![feature(type_alias_impl_trait)] type X = impl Sized; trait Foo { type Bar: Iterator; } impl Foo for () { type Bar = std::vec::IntoIter; //~^ ERROR type mismatch resolving ` as Iterator>::Item == X } fn incoherent() { let f: X = 22_i32; } fn main() {}