rust/tests/ui/impl-trait/in-trait/refine-cycle.rs

27 lines
461 B
Rust

//@ check-pass
// Make sure that refinement checking doesn't cause a cycle in `Instance::resolve`
// which calls `compare_impl_item`.
trait Foo {
fn test() -> impl IntoIterator<Item = ()> + Send;
}
struct A;
impl Foo for A {
fn test() -> impl IntoIterator<Item = ()> + Send {
B::test()
}
}
struct B;
impl Foo for B {
fn test() -> impl IntoIterator<Item = ()> + Send {
for () in A::test() {}
[]
}
}
fn main() {}