This repository was archived by the owner on May 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +46
-0
lines changed Expand file tree Collapse file tree 2 files changed +46
-0
lines changed Original file line number Diff line number Diff line change 1+ // check-fail
2+ // edition:2021
3+
4+ #![ allow( unreachable_code) ]
5+
6+ async fn f ( _: u8 ) { }
7+
8+ async fn g ( ) {
9+ // Todo returns `!`, so the await is never reached, and in particular the
10+ // temporaries inside the formatting machinery are not still alive at the
11+ // await point.
12+ f ( todo ! ( "..." ) ) . await ;
13+ }
14+
15+ fn require_send ( _: impl Send ) { }
16+
17+ fn main ( ) {
18+ require_send ( g ( ) ) ; //~ future cannot be sent between threads safely
19+ }
Original file line number Diff line number Diff line change 1+ error: future cannot be sent between threads safely
2+ --> $DIR/panic-temporaries.rs:18:18
3+ |
4+ LL | require_send(g());
5+ | ^^^ future returned by `g` is not `Send`
6+ |
7+ = help: the trait `Sync` is not implemented for `core::fmt::Opaque`
8+ note: future is not `Send` as this value is used across an await
9+ --> $DIR/panic-temporaries.rs:12:20
10+ |
11+ LL | f(todo!("...")).await;
12+ | ------------ ^^^^^^ await occurs here, with `$crate::format_args!($($arg)+)` maybe used later
13+ | |
14+ | has type `ArgumentV1<'_>` which is not `Send`
15+ note: `$crate::format_args!($($arg)+)` is later dropped here
16+ --> $DIR/panic-temporaries.rs:12:26
17+ |
18+ LL | f(todo!("...")).await;
19+ | ^
20+ note: required by a bound in `require_send`
21+ --> $DIR/panic-temporaries.rs:15:25
22+ |
23+ LL | fn require_send(_: impl Send) {}
24+ | ^^^^ required by this bound in `require_send`
25+
26+ error: aborting due to previous error
27+
You can’t perform that action at this time.
0 commit comments