#![feature(type_alias_impl_trait)] type X = impl Sized; trait Foo { type Bar: Iterator; } impl Foo for () { type Bar = std::vec::IntoIter; //~^ ERROR expected `IntoIter` to be an iterator that yields `X`, but it yields `u32` } fn incoherent() -> X { 22_i32 } fn main() {}