Hide task_context
when lowering body
This commit is contained in:
parent
75ff3110ac
commit
c7d9d89e9b
@ -972,8 +972,10 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||||||
f: impl FnOnce(&mut Self) -> (&'hir [hir::Param<'hir>], hir::Expr<'hir>),
|
f: impl FnOnce(&mut Self) -> (&'hir [hir::Param<'hir>], hir::Expr<'hir>),
|
||||||
) -> hir::BodyId {
|
) -> hir::BodyId {
|
||||||
let prev_gen_kind = self.generator_kind.take();
|
let prev_gen_kind = self.generator_kind.take();
|
||||||
|
let task_context = self.task_context.take();
|
||||||
let (parameters, result) = f(self);
|
let (parameters, result) = f(self);
|
||||||
let body_id = self.record_body(parameters, result);
|
let body_id = self.record_body(parameters, result);
|
||||||
|
self.task_context = task_context;
|
||||||
self.generator_kind = prev_gen_kind;
|
self.generator_kind = prev_gen_kind;
|
||||||
body_id
|
body_id
|
||||||
}
|
}
|
||||||
|
12
src/test/ui/async-await/issue-70594.rs
Normal file
12
src/test/ui/async-await/issue-70594.rs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// edition:2018
|
||||||
|
|
||||||
|
async fn fun() {
|
||||||
|
[1; ().await];
|
||||||
|
//~^ error: `await` is only allowed inside `async` functions and blocks
|
||||||
|
//~| error: `.await` is not allowed in a `const`
|
||||||
|
//~| error: `loop` is not allowed in a `const`
|
||||||
|
//~| error: `.await` is not allowed in a `const`
|
||||||
|
//~| error: the trait bound `(): std::future::Future` is not satisfied
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
44
src/test/ui/async-await/issue-70594.stderr
Normal file
44
src/test/ui/async-await/issue-70594.stderr
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||||
|
--> $DIR/issue-70594.rs:4:9
|
||||||
|
|
|
||||||
|
LL | async fn fun() {
|
||||||
|
| --- this is not `async`
|
||||||
|
LL | [1; ().await];
|
||||||
|
| ^^^^^^^^ only allowed inside `async` functions and blocks
|
||||||
|
|
||||||
|
error[E0744]: `.await` is not allowed in a `const`
|
||||||
|
--> $DIR/issue-70594.rs:4:9
|
||||||
|
|
|
||||||
|
LL | [1; ().await];
|
||||||
|
| ^^^^^^^^
|
||||||
|
|
||||||
|
error[E0658]: `loop` is not allowed in a `const`
|
||||||
|
--> $DIR/issue-70594.rs:4:9
|
||||||
|
|
|
||||||
|
LL | [1; ().await];
|
||||||
|
| ^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: see issue #52000 <https://github.com/rust-lang/rust/issues/52000> for more information
|
||||||
|
= help: add `#![feature(const_loop)]` to the crate attributes to enable
|
||||||
|
|
||||||
|
error[E0744]: `.await` is not allowed in a `const`
|
||||||
|
--> $DIR/issue-70594.rs:4:9
|
||||||
|
|
|
||||||
|
LL | [1; ().await];
|
||||||
|
| ^^^^^^^^
|
||||||
|
|
||||||
|
error[E0277]: the trait bound `(): std::future::Future` is not satisfied
|
||||||
|
--> $DIR/issue-70594.rs:4:9
|
||||||
|
|
|
||||||
|
LL | [1; ().await];
|
||||||
|
| ^^^^^^^^ the trait `std::future::Future` is not implemented for `()`
|
||||||
|
|
|
||||||
|
::: $SRC_DIR/libcore/future/mod.rs:LL:COL
|
||||||
|
|
|
||||||
|
LL | F: Future,
|
||||||
|
| ------ required by this bound in `std::future::poll_with_context`
|
||||||
|
|
||||||
|
error: aborting due to 5 previous errors
|
||||||
|
|
||||||
|
Some errors have detailed explanations: E0277, E0658, E0728, E0744.
|
||||||
|
For more information about an error, try `rustc --explain E0277`.
|
Loading…
x
Reference in New Issue
Block a user