9f03cfc207
This was previously needed because the indirection used to hide some unexplained lifetime errors, which it turned out were related to the `min_choice` algorithm. Removing the indirection also solves a couple of cycle errors, large moves and makes async blocks support the `#[track_caller]` annotation.
29 lines
1.4 KiB
Plaintext
29 lines
1.4 KiB
Plaintext
error[E0277]: `[async fn body@$DIR/async.rs:23:29: 25:2]` is not a future
|
|
--> $DIR/async.rs:23:25
|
|
|
|
|
LL | async fn foo(x: u32) -> u32 {
|
|
| ^^^ `[async fn body@$DIR/async.rs:23:29: 25:2]` is not a future
|
|
|
|
|
= help: the trait `Future` is not implemented for `[async fn body@$DIR/async.rs:23:29: 25:2]`
|
|
= note: [async fn body@$DIR/async.rs:23:29: 25:2] must be a future or must implement `IntoFuture` to be awaited
|
|
|
|
error: internal compiler error: projection clauses should be implied from elsewhere. obligation: `Obligation(predicate=Binder(ProjectionPredicate(AliasTy { substs: [[async fn body@$DIR/async.rs:23:29: 25:2]], def_id: ... }, Term::Ty(u32)), []), depth=0)`
|
|
--> $DIR/async.rs:23:25
|
|
|
|
|
LL | async fn foo(x: u32) -> u32 {
|
|
| ^^^query stack during panic:
|
|
#0 [typeck] type-checking `foo`
|
|
#1 [thir_body] building THIR for `foo`
|
|
#2 [mir_built] building MIR for `foo`
|
|
#3 [unsafety_check_result] unsafety-checking `foo`
|
|
#4 [mir_const] preparing `foo` for borrow checking
|
|
#5 [mir_promoted] processing MIR for `foo`
|
|
#6 [mir_borrowck] borrow-checking `foo`
|
|
#7 [type_of] computing type of `foo::{opaque#0}`
|
|
#8 [check_mod_item_types] checking item types in top-level module
|
|
#9 [analysis] running analysis passes on this crate
|
|
end of query stack
|
|
error: aborting due to 2 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0277`.
|