//@ revisions: current next //@[next] compile-flags: -Znext-solver //@ ignore-compare-mode-next-solver (explicit revisions) //@ check-pass #![allow(unconditional_recursion)] // Regression test for trait-system-refactor-initiative#182. trait Id { type This; } impl Id for Vec { type This = Vec; } fn to_assoc(x: T) -> ::This { todo!() } fn mirror(x: Vec) -> impl Id> { let x = to_assoc(mirror(x)); // `?x` equals ` as Id>::This`. We need to eagerly infer the // type of `?x` to prevent this method call from resulting in an error. x.len(); x } fn main() {}