diff options
Diffstat (limited to 'tests/ui/recursion/recursive-impl-trait-iterator-by-ref-67552.rs')
| -rw-r--r-- | tests/ui/recursion/recursive-impl-trait-iterator-by-ref-67552.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/ui/recursion/recursive-impl-trait-iterator-by-ref-67552.rs b/tests/ui/recursion/recursive-impl-trait-iterator-by-ref-67552.rs new file mode 100644 index 00000000000..0875d385ddc --- /dev/null +++ b/tests/ui/recursion/recursive-impl-trait-iterator-by-ref-67552.rs @@ -0,0 +1,33 @@ +//@ build-fail +//@ compile-flags: -Copt-level=0 + +fn main() { + rec(Empty); +} + +struct Empty; + +impl Iterator for Empty { + type Item = (); + fn next<'a>(&'a mut self) -> core::option::Option<()> { + None + } +} + +fn identity<T>(x: T) -> T { + x +} + +fn rec<T>(mut it: T) +where + T: Iterator, +{ + if () == () { + T::count(it); + } else { + rec(identity(&mut it)) + //~^ ERROR reached the recursion limit while instantiating + } +} + +// https://github.com/rust-lang/rust/issues/67552 |
