about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--tests/ui/async-await/async-closures/once.rs22
-rw-r--r--tests/ui/async-await/async-closures/refd.rs18
2 files changed, 40 insertions, 0 deletions
diff --git a/tests/ui/async-await/async-closures/once.rs b/tests/ui/async-await/async-closures/once.rs
new file mode 100644
index 00000000000..a1c56c5de6a
--- /dev/null
+++ b/tests/ui/async-await/async-closures/once.rs
@@ -0,0 +1,22 @@
+// aux-build:block-on.rs
+// edition:2021
+// build-pass
+
+#![feature(async_closure)]
+
+use std::future::Future;
+
+extern crate block_on;
+
+struct NoCopy;
+
+fn main() {
+    block_on::block_on(async {
+        async fn call_once<F: Future>(x: impl Fn(&'static str) -> F) -> F::Output {
+            x("hello, world").await
+        }
+        call_once(async |x: &'static str| {
+            println!("hello, {x}");
+        }).await
+    });
+}
diff --git a/tests/ui/async-await/async-closures/refd.rs b/tests/ui/async-await/async-closures/refd.rs
new file mode 100644
index 00000000000..7c61ff2d9bd
--- /dev/null
+++ b/tests/ui/async-await/async-closures/refd.rs
@@ -0,0 +1,18 @@
+// aux-build:block-on.rs
+// edition:2021
+// build-pass
+
+// check that `&{async-closure}` implements `AsyncFn`.
+
+#![feature(async_closure)]
+
+extern crate block_on;
+
+struct NoCopy;
+
+fn main() {
+    block_on::block_on(async {
+        async fn call_once(x: impl async Fn()) { x().await }
+        call_once(&async || {}).await
+    });
+}