diff options
| author | Oli Scherer <git-spam-no-reply9815368754983@oli-obk.de> | 2024-03-22 12:09:53 +0000 |
|---|---|---|
| committer | Oli Scherer <git-spam-no-reply9815368754983@oli-obk.de> | 2024-04-08 15:00:03 +0000 |
| commit | 0689a4f4f719418ee4fba74aa39d7920104343b5 (patch) | |
| tree | 9a466440bb39046daca274f4ddadd2e0f9205bc7 | |
| parent | 75fd074338801fba74a8cf7f8c48c5c5be362d08 (diff) | |
| download | rust-0689a4f4f719418ee4fba74aa39d7920104343b5.tar.gz rust-0689a4f4f719418ee4fba74aa39d7920104343b5.zip | |
Add regression test
| -rw-r--r-- | tests/ui/impl-trait/nested-hkl-lifetime.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/ui/impl-trait/nested-hkl-lifetime.rs b/tests/ui/impl-trait/nested-hkl-lifetime.rs new file mode 100644 index 00000000000..089ceca6777 --- /dev/null +++ b/tests/ui/impl-trait/nested-hkl-lifetime.rs @@ -0,0 +1,32 @@ +//@ check-pass + +use std::iter::FromIterator; + +struct DynamicAlt<P>(P); + +impl<P> FromIterator<P> for DynamicAlt<P> { + fn from_iter<T: IntoIterator<Item = P>>(_iter: T) -> Self { + loop {} + } +} + +fn owned_context<I, F>(_: F) -> impl FnMut(I) -> I { + |i| i +} + +trait Parser<I> {} + +impl<T, I> Parser<I> for T where T: FnMut(I) -> I {} + +fn alt<I, P: Parser<I>>(_: DynamicAlt<P>) -> impl FnMut(I) -> I { + |i| i +} + +fn rule_to_parser<'c>() -> impl Parser<&'c str> { + move |input| { + let v: Vec<()> = vec![]; + alt(v.iter().map(|()| owned_context(rule_to_parser())).collect::<DynamicAlt<_>>())(input) + } +} + +fn main() {} |
