diff options
Diffstat (limited to 'src/test/ui/async-await/issues/issue-53249.rs')
-rw-r--r-- | src/test/ui/async-await/issues/issue-53249.rs | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/src/test/ui/async-await/issues/issue-53249.rs b/src/test/ui/async-await/issues/issue-53249.rs deleted file mode 100644 index 3a33af2d2..000000000 --- a/src/test/ui/async-await/issues/issue-53249.rs +++ /dev/null @@ -1,47 +0,0 @@ -// check-pass -// edition:2018 - -#![feature(arbitrary_self_types)] - -use std::task::{self, Poll}; -use std::future::Future; -use std::marker::Unpin; -use std::pin::Pin; - -// This is a regression test for an ICE/unbounded recursion issue relating to async-await. - -#[derive(Debug)] -#[must_use = "futures do nothing unless polled"] -pub struct Lazy<F> { - f: Option<F> -} - -impl<F> Unpin for Lazy<F> {} - -pub fn lazy<F, R>(f: F) -> Lazy<F> - where F: FnOnce(&mut task::Context) -> R, -{ - Lazy { f: Some(f) } -} - -impl<R, F> Future for Lazy<F> - where F: FnOnce(&mut task::Context) -> R, -{ - type Output = R; - - fn poll(mut self: Pin<&mut Self>, cx: &mut task::Context) -> Poll<R> { - Poll::Ready((self.f.take().unwrap())(cx)) - } -} - -async fn __receive<WantFn, Fut>(want: WantFn) -> () - where Fut: Future<Output = ()>, WantFn: Fn(&Box<dyn Send + 'static>) -> Fut, -{ - lazy(|_| ()).await; -} - -pub fn basic_spawn_receive() { - async { __receive(|_| async { () }).await }; -} - -fn main() {} |