//@ check-pass //@ revisions: current next //@ ignore-compare-mode-next-solver (explicit revisions) //@[next] compile-flags: -Znext-solver //@ edition: 2024 // Regression test for . // Avoid unnecessarily computing the RPITIT type of the first impl when checking the WF of the // second impl, since the first impl relies on the hidden type of the second impl. use std::future::Future; trait Handler {} struct W(T); trait SendTarget { fn call(self) -> impl Future + Send; } impl SendTarget for W where T: Handler + Send, { async fn call(self) { todo!() } } impl SendTarget for T where T: Handler + Send, { async fn call(self) { W(self).call().await } } fn main() {}