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| {
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,
--- /dev/null
+// edition:2018
+#![feature(async_await)]
+
+async fn do_the_thing() -> u8 {
+ 8
+}
+
+fn main() {
+ let x = move || {};
+ let y = do_the_thing().await; //~ ERROR `await` is only allowed inside `async` functions
+}
--- /dev/null
+error[E0728]: `await` is only allowed inside `async` functions and blocks
+ --> $DIR/issue-63398.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
+