summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/tests/ui/manual_try_fold.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/clippy/tests/ui/manual_try_fold.rs')
-rw-r--r--src/tools/clippy/tests/ui/manual_try_fold.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/tools/clippy/tests/ui/manual_try_fold.rs b/src/tools/clippy/tests/ui/manual_try_fold.rs
index bddf03ac3..7299d7cf9 100644
--- a/src/tools/clippy/tests/ui/manual_try_fold.rs
+++ b/src/tools/clippy/tests/ui/manual_try_fold.rs
@@ -96,3 +96,33 @@ fn msrv_juust_right() {
.fold(Some(0i32), |sum, i| sum?.checked_add(*i))
.unwrap();
}
+
+mod issue11876 {
+ struct Foo;
+
+ impl Bar for Foo {
+ type Output = u32;
+ }
+
+ trait Bar: Sized {
+ type Output;
+ fn fold<A, F>(self, init: A, func: F) -> Fold<Self, A, F>
+ where
+ A: Clone,
+ F: Fn(A, Self::Output) -> A,
+ {
+ Fold { this: self, init, func }
+ }
+ }
+
+ #[allow(dead_code)]
+ struct Fold<S, A, F> {
+ this: S,
+ init: A,
+ func: F,
+ }
+
+ fn main() {
+ Foo.fold(Some(0), |acc, entry| Some(acc? + entry));
+ }
+}