about summary refs log tree commit diff
path: root/tests/ui/impl-trait/auto-trait-contains-err.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/impl-trait/auto-trait-contains-err.rs')
-rw-r--r--tests/ui/impl-trait/auto-trait-contains-err.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/ui/impl-trait/auto-trait-contains-err.rs b/tests/ui/impl-trait/auto-trait-contains-err.rs
new file mode 100644
index 00000000000..d7f094211d7
--- /dev/null
+++ b/tests/ui/impl-trait/auto-trait-contains-err.rs
@@ -0,0 +1,25 @@
+//@ compile-flags: --edition=2021
+
+use std::future::Future;
+
+fn invalid_future() -> impl Future {}
+//~^ ERROR `()` is not a future
+
+fn create_complex_future() -> impl Future<Output = impl ReturnsSend> {
+    async { &|| async { invalid_future().await } }
+}
+
+fn coerce_impl_trait() -> impl Future<Output = impl Send> {
+    create_complex_future()
+}
+
+trait ReturnsSend {}
+
+impl<F, R> ReturnsSend for F
+where
+    F: Fn() -> R,
+    R: Send,
+{
+}
+
+fn main() {}