diff options
Diffstat (limited to '')
-rw-r--r-- | src/test/ui/issues/issue-28550.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/test/ui/issues/issue-28550.rs b/src/test/ui/issues/issue-28550.rs new file mode 100644 index 000000000..95583f805 --- /dev/null +++ b/src/test/ui/issues/issue-28550.rs @@ -0,0 +1,16 @@ +// run-pass +struct A<F: FnOnce()->T,T>(F::Output); +struct B<F: FnOnce()->T,T>(A<F,T>); + +// Removing Option causes it to compile. +fn foo<T,F: FnOnce()->T>(f: F) -> Option<B<F,T>> { + Some(B(A(f()))) +} + +fn main() { + let v = (|| foo(||4))(); + match v { + Some(B(A(4))) => {}, + _ => unreachable!() + } +} |