//@ revisions: current next //@ ignore-compare-mode-next-solver (explicit revisions) //@[next] compile-flags: -Znext-solver #![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() {}