]> git.lizzy.rs Git - rust.git/blob - src/test/ui/async-await/async-await-let-else.rs
Merge commit 'b52fb5234cd7c11ecfae51897a6f7fa52e8777fc' into clippyup
[rust.git] / src / test / ui / async-await / async-await-let-else.rs
1 // edition:2021
2 #![feature(let_else)]
3 use std::rc::Rc;
4
5 async fn foo(x: Option<bool>) {
6     let Some(_) = x else {
7         let r = Rc::new(());
8         bar().await
9     };
10 }
11
12 async fn bar() -> ! {
13     panic!()
14 }
15
16 fn is_send<T: Send>(_: T) {}
17
18 async fn foo2(x: Option<bool>) {
19     let Some(_) = x else {
20         bar2(Rc::new(())).await
21     };
22 }
23
24 async fn bar2<T>(_: T) -> ! {
25     panic!()
26 }
27
28 async fn foo3(x: Option<bool>) {
29     let Some(_) = x else {
30         (Rc::new(()), bar().await);
31         return;
32     };
33 }
34
35 async fn foo4(x: Option<bool>) {
36     let Some(_) = x else {
37         let r = Rc::new(());
38         bar().await;
39         println!("{:?}", r);
40         return;
41     };
42 }
43
44 fn main() {
45     is_send(foo(Some(true)));
46     //~^ ERROR future cannot be sent between threads safely
47     is_send(foo2(Some(true)));
48     //~^ ERROR future cannot be sent between threads safely
49     is_send(foo3(Some(true)));
50     //~^ ERROR future cannot be sent between threads safely
51     is_send(foo4(Some(true)));
52     //~^ ERROR future cannot be sent between threads safely
53 }