@@ -618,9 +618,9 @@ impl<'hir> LoweringContext<'_, 'hir> {
618
618
/// Desugar `<expr>.await` into:
619
619
/// ```rust
620
620
/// match ::std::future::IntoFuture::into_future(<expr>) {
621
- /// mut pinned => loop {
621
+ /// mut __awaitee => loop {
622
622
/// match unsafe { ::std::future::Future::poll(
623
- /// <::std::pin::Pin>::new_unchecked(&mut pinned ),
623
+ /// <::std::pin::Pin>::new_unchecked(&mut __awaitee ),
624
624
/// ::std::future::get_context(task_context),
625
625
/// ) } {
626
626
/// ::std::task::Poll::Ready(result) => break result,
@@ -657,21 +657,24 @@ impl<'hir> LoweringContext<'_, 'hir> {
657
657
let expr = self . lower_expr_mut ( expr) ;
658
658
let expr_hir_id = expr. hir_id ;
659
659
660
- let pinned_ident = Ident :: with_dummy_span ( sym:: pinned) ;
661
- let ( pinned_pat, pinned_pat_hid) =
662
- self . pat_ident_binding_mode ( span, pinned_ident, hir:: BindingAnnotation :: Mutable ) ;
660
+ // Note that the name of this binding must not be changed to something else because
661
+ // debuggers and debugger extensions expect it to be called `__awaitee`. They use
662
+ // this name to identify what is being awaited by a suspended async functions.
663
+ let awaitee_ident = Ident :: with_dummy_span ( sym:: __awaitee) ;
664
+ let ( awaitee_pat, awaitee_pat_hid) =
665
+ self . pat_ident_binding_mode ( span, awaitee_ident, hir:: BindingAnnotation :: Mutable ) ;
663
666
664
667
let task_context_ident = Ident :: with_dummy_span ( sym:: _task_context) ;
665
668
666
669
// unsafe {
667
670
// ::std::future::Future::poll(
668
- // ::std::pin::Pin::new_unchecked(&mut pinned ),
671
+ // ::std::pin::Pin::new_unchecked(&mut __awaitee ),
669
672
// ::std::future::get_context(task_context),
670
673
// )
671
674
// }
672
675
let poll_expr = {
673
- let pinned = self . expr_ident ( span, pinned_ident , pinned_pat_hid ) ;
674
- let ref_mut_pinned = self . expr_mut_addr_of ( span, pinned ) ;
676
+ let awaitee = self . expr_ident ( span, awaitee_ident , awaitee_pat_hid ) ;
677
+ let ref_mut_awaitee = self . expr_mut_addr_of ( span, awaitee ) ;
675
678
let task_context = if let Some ( task_context_hid) = self . task_context {
676
679
self . expr_ident_mut ( span, task_context_ident, task_context_hid)
677
680
} else {
@@ -681,7 +684,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
681
684
let new_unchecked = self . expr_call_lang_item_fn_mut (
682
685
span,
683
686
hir:: LangItem :: PinNewUnchecked ,
684
- arena_vec ! [ self ; ref_mut_pinned ] ,
687
+ arena_vec ! [ self ; ref_mut_awaitee ] ,
685
688
Some ( expr_hir_id) ,
686
689
) ;
687
690
let get_context = self . expr_call_lang_item_fn_mut (
@@ -782,8 +785,8 @@ impl<'hir> LoweringContext<'_, 'hir> {
782
785
span : self . lower_span ( span) ,
783
786
} ) ;
784
787
785
- // mut pinned => loop { ... }
786
- let pinned_arm = self . arm ( pinned_pat , loop_expr) ;
788
+ // mut __awaitee => loop { ... }
789
+ let awaitee_arm = self . arm ( awaitee_pat , loop_expr) ;
787
790
788
791
// `match ::std::future::IntoFuture::into_future(<expr>) { ... }`
789
792
let into_future_span = self . mark_span_with_reason (
@@ -799,11 +802,11 @@ impl<'hir> LoweringContext<'_, 'hir> {
799
802
) ;
800
803
801
804
// match <into_future_expr> {
802
- // mut pinned => loop { .. }
805
+ // mut __awaitee => loop { .. }
803
806
// }
804
807
hir:: ExprKind :: Match (
805
808
into_future_expr,
806
- arena_vec ! [ self ; pinned_arm ] ,
809
+ arena_vec ! [ self ; awaitee_arm ] ,
807
810
hir:: MatchSource :: AwaitDesugar ,
808
811
)
809
812
}
0 commit comments