// compile-flags: -Ztrait-solver=next // check-pass trait Foo { type Assoc; } trait Bar {} impl Foo for T { type Assoc = i32; } impl Bar for T where T: Foo {} fn require_bar() {} fn foo() { // Unlike the classic solver, `::Assoc = _` will still project // down to `i32` even though there's a param-env candidate here, since we // don't assemble any param-env projection candidates for `T: Foo` alone. require_bar::(); } fn main() {}