Files
rust/tests/ui/impl-trait/method/method-resolution4.rs
2025-09-26 16:33:15 +02:00

19 lines
507 B
Rust

//! The recursive method call yields the opaque type. The
//! `next` method call then constrains the hidden type to `&mut _`
//! because `next` takes `&mut self`. We never resolve the inference
//! variable, but get a type mismatch when comparing `&mut _` with
//! `std::iter::Empty`.
//@ revisions: current next
//@[next] compile-flags: -Znext-solver
//@ check-pass
fn foo(b: bool) -> impl Iterator<Item = ()> {
if b {
foo(false).next().unwrap();
}
std::iter::empty()
}
fn main() {}