Skip to content

Commit bd5928f

Browse files
committed
Fix await span lowering.
1 parent 3101de2 commit bd5928f

File tree

1 file changed

+17
-6
lines changed
  • compiler/rustc_ast_lowering/src

1 file changed

+17
-6
lines changed

compiler/rustc_ast_lowering/src/expr.rs

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,9 @@ impl<'hir> LoweringContext<'_, 'hir> {
204204
MatchKind::Postfix => hir::MatchSource::Postfix,
205205
},
206206
),
207-
ExprKind::Await(expr, await_kw_span) => self.lower_expr_await(*await_kw_span, expr),
207+
ExprKind::Await(expr, await_kw_span) => {
208+
self.lower_expr_await(*await_kw_span, e.span, expr)
209+
}
208210
ExprKind::Use(expr, use_kw_span) => self.lower_expr_use(*use_kw_span, expr),
209211
ExprKind::Closure(box Closure {
210212
binder,
@@ -816,20 +818,24 @@ impl<'hir> LoweringContext<'_, 'hir> {
816818
/// }
817819
/// }
818820
/// ```
819-
fn lower_expr_await(&mut self, await_kw_span: Span, expr: &Expr) -> hir::ExprKind<'hir> {
821+
fn lower_expr_await(
822+
&mut self,
823+
await_kw_span: Span,
824+
full_span: Span,
825+
expr: &Expr,
826+
) -> hir::ExprKind<'hir> {
820827
let expr = self.arena.alloc(self.lower_expr_mut(expr));
821-
self.make_lowered_await(await_kw_span, expr, FutureKind::Future)
828+
self.make_lowered_await(await_kw_span, full_span, expr, FutureKind::Future)
822829
}
823830

824831
/// Takes an expr that has already been lowered and generates a desugared await loop around it
825832
fn make_lowered_await(
826833
&mut self,
827834
await_kw_span: Span,
835+
full_span: Span,
828836
expr: &'hir hir::Expr<'hir>,
829837
await_kind: FutureKind,
830838
) -> hir::ExprKind<'hir> {
831-
let full_span = expr.span.to(await_kw_span);
832-
833839
let is_async_gen = match self.coroutine_kind {
834840
Some(hir::CoroutineKind::Desugared(hir::CoroutineDesugaring::Async, _)) => false,
835841
Some(hir::CoroutineKind::Desugared(hir::CoroutineDesugaring::AsyncGen, _)) => true,
@@ -1794,7 +1800,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
17941800
));
17951801
// `unsafe { ... }`
17961802
let iter = self.arena.alloc(self.expr_unsafe(iter));
1797-
let kind = self.make_lowered_await(head_span, iter, FutureKind::AsyncIterator);
1803+
let kind = self.make_lowered_await(
1804+
head_span,
1805+
head_span,
1806+
iter,
1807+
FutureKind::AsyncIterator,
1808+
);
17981809
self.arena.alloc(hir::Expr { hir_id: self.next_id(), kind, span: head_span })
17991810
}
18001811
};

0 commit comments

Comments
 (0)