Rollup merge of #63509 - estebank:async-span, r=Centril
Point at the right enclosing scope when using `await` in non-async fn Fix #63398.
This commit is contained in:
commit
02e2a57f26
3 changed files with 27 additions and 1 deletions
|
@ -677,6 +677,7 @@ impl LoweringContext<'_> {
|
|||
let fn_decl = self.lower_fn_decl(decl, None, false, None);
|
||||
|
||||
self.with_new_scopes(|this| {
|
||||
let prev = this.current_item;
|
||||
this.current_item = Some(fn_decl_span);
|
||||
let mut generator_kind = None;
|
||||
let body_id = this.lower_fn_body(decl, |this| {
|
||||
|
@ -690,8 +691,10 @@ impl LoweringContext<'_> {
|
|||
generator_kind,
|
||||
movability,
|
||||
);
|
||||
let capture_clause = this.lower_capture_clause(capture_clause);
|
||||
this.current_item = prev;
|
||||
hir::ExprKind::Closure(
|
||||
this.lower_capture_clause(capture_clause),
|
||||
capture_clause,
|
||||
fn_decl,
|
||||
body_id,
|
||||
fn_decl_span,
|
||||
|
|
12
src/test/ui/async-await/issues/non-async-enclosing-span.rs
Normal file
12
src/test/ui/async-await/issues/non-async-enclosing-span.rs
Normal file
|
@ -0,0 +1,12 @@
|
|||
// edition:2018
|
||||
#![feature(async_await)]
|
||||
|
||||
async fn do_the_thing() -> u8 {
|
||||
8
|
||||
}
|
||||
// #63398: point at the enclosing scope and not the previously seen closure
|
||||
fn main() { //~ NOTE this is not `async`
|
||||
let x = move || {};
|
||||
let y = do_the_thing().await; //~ ERROR `await` is only allowed inside `async` functions
|
||||
//~^ NOTE only allowed inside `async` functions and blocks
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||
--> $DIR/non-async-enclosing-span.rs:10:13
|
||||
|
|
||||
LL | fn main() {
|
||||
| ---- this is not `async`
|
||||
LL | let x = move || {};
|
||||
LL | let y = do_the_thing().await;
|
||||
| ^^^^^^^^^^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
||||
|
||||
error: aborting due to previous error
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue