rust/tests/ui/impl-trait/in-trait/cycle-if-impl-doesnt-apply.rs

33 lines
732 B
Rust

//@ check-pass
//@ revisions: current next
//@ ignore-compare-mode-next-solver (explicit revisions)
//@[next] compile-flags: -Znext-solver
//@ edition: 2024
// Regression test for <https://github.com/rust-lang/trait-system-refactor-initiative/issues/185>.
// 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.
trait Foo {
fn call(self) -> impl Send;
}
trait Nested {}
impl<T> Foo for T
where
T: Nested,
{
fn call(self) -> impl Sized {
NotSatisfied.call()
}
}
struct NotSatisfied;
impl Foo for NotSatisfied {
fn call(self) -> impl Sized {
todo!()
}
}
fn main() {}