// revisions: current next //[next] compile-flags: -Ztrait-solver=next #![feature(trait_upcasting)] trait Super { type Assoc; } trait Sub: Super {} impl Super for T { type Assoc = i32; } fn illegal(x: &dyn Sub) -> &dyn Super { x } //~^ ERROR mismatched types // Want to make sure that we can't "upcast" to a supertrait that has a different // associated type that is instead provided by a blanket impl (and doesn't come // from the object bounds). fn main() {}