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