@@ -686,59 +686,79 @@ impl<'tcx> MirBorrowckCtxt<'_, 'tcx> {
686
686
let mir_description = match kind {
687
687
hir:: ClosureKind :: Coroutine ( hir:: CoroutineKind :: Desugared (
688
688
hir:: CoroutineDesugaring :: Async ,
689
- src,
690
- ) ) => match src {
691
- hir:: CoroutineSource :: Block => " of async block" ,
692
- hir:: CoroutineSource :: Closure => " of async closure" ,
693
- hir:: CoroutineSource :: Fn => {
694
- let parent_item =
695
- tcx. hir_node_by_def_id ( hir. get_parent_item ( mir_hir_id) . def_id ) ;
696
- let output = & parent_item
697
- . fn_decl ( )
698
- . expect ( "coroutine lowered from async fn should be in fn" )
699
- . output ;
700
- span = output. span ( ) ;
701
- if let hir:: FnRetTy :: Return ( ret) = output {
702
- hir_ty = Some ( self . get_future_inner_return_ty ( * ret) ) ;
703
- }
704
- " of async function"
689
+ hir:: CoroutineSource :: Block ,
690
+ ) ) => " of async block" ,
691
+
692
+ hir:: ClosureKind :: Coroutine ( hir:: CoroutineKind :: Desugared (
693
+ hir:: CoroutineDesugaring :: Async ,
694
+ hir:: CoroutineSource :: Closure ,
695
+ ) ) => " of async closure" ,
696
+
697
+ hir:: ClosureKind :: Coroutine ( hir:: CoroutineKind :: Desugared (
698
+ hir:: CoroutineDesugaring :: Async ,
699
+ hir:: CoroutineSource :: Fn ,
700
+ ) ) => {
701
+ let parent_item =
702
+ tcx. hir_node_by_def_id ( hir. get_parent_item ( mir_hir_id) . def_id ) ;
703
+ let output = & parent_item
704
+ . fn_decl ( )
705
+ . expect ( "coroutine lowered from async fn should be in fn" )
706
+ . output ;
707
+ span = output. span ( ) ;
708
+ if let hir:: FnRetTy :: Return ( ret) = output {
709
+ hir_ty = Some ( self . get_future_inner_return_ty ( * ret) ) ;
705
710
}
706
- } ,
711
+ " of async function"
712
+ }
713
+
707
714
hir:: ClosureKind :: Coroutine ( hir:: CoroutineKind :: Desugared (
708
715
hir:: CoroutineDesugaring :: Gen ,
709
- src,
710
- ) ) => match src {
711
- hir:: CoroutineSource :: Block => " of gen block" ,
712
- hir:: CoroutineSource :: Closure => " of gen closure" ,
713
- hir:: CoroutineSource :: Fn => {
714
- let parent_item =
715
- tcx. hir_node_by_def_id ( hir. get_parent_item ( mir_hir_id) . def_id ) ;
716
- let output = & parent_item
717
- . fn_decl ( )
718
- . expect ( "coroutine lowered from gen fn should be in fn" )
719
- . output ;
720
- span = output. span ( ) ;
721
- " of gen function"
722
- }
723
- } ,
716
+ hir:: CoroutineSource :: Block ,
717
+ ) ) => " of gen block" ,
718
+
719
+ hir:: ClosureKind :: Coroutine ( hir:: CoroutineKind :: Desugared (
720
+ hir:: CoroutineDesugaring :: Gen ,
721
+ hir:: CoroutineSource :: Closure ,
722
+ ) ) => " of gen closure" ,
723
+
724
+ hir:: ClosureKind :: Coroutine ( hir:: CoroutineKind :: Desugared (
725
+ hir:: CoroutineDesugaring :: Gen ,
726
+ hir:: CoroutineSource :: Fn ,
727
+ ) ) => {
728
+ let parent_item =
729
+ tcx. hir_node_by_def_id ( hir. get_parent_item ( mir_hir_id) . def_id ) ;
730
+ let output = & parent_item
731
+ . fn_decl ( )
732
+ . expect ( "coroutine lowered from gen fn should be in fn" )
733
+ . output ;
734
+ span = output. span ( ) ;
735
+ " of gen function"
736
+ }
724
737
725
738
hir:: ClosureKind :: Coroutine ( hir:: CoroutineKind :: Desugared (
726
739
hir:: CoroutineDesugaring :: AsyncGen ,
727
- src,
728
- ) ) => match src {
729
- hir:: CoroutineSource :: Block => " of async gen block" ,
730
- hir:: CoroutineSource :: Closure => " of async gen closure" ,
731
- hir:: CoroutineSource :: Fn => {
732
- let parent_item =
733
- tcx. hir_node_by_def_id ( hir. get_parent_item ( mir_hir_id) . def_id ) ;
734
- let output = & parent_item
735
- . fn_decl ( )
736
- . expect ( "coroutine lowered from async gen fn should be in fn" )
737
- . output ;
738
- span = output. span ( ) ;
739
- " of async gen function"
740
- }
741
- } ,
740
+ hir:: CoroutineSource :: Block ,
741
+ ) ) => " of async gen block" ,
742
+
743
+ hir:: ClosureKind :: Coroutine ( hir:: CoroutineKind :: Desugared (
744
+ hir:: CoroutineDesugaring :: AsyncGen ,
745
+ hir:: CoroutineSource :: Closure ,
746
+ ) ) => " of async gen closure" ,
747
+
748
+ hir:: ClosureKind :: Coroutine ( hir:: CoroutineKind :: Desugared (
749
+ hir:: CoroutineDesugaring :: AsyncGen ,
750
+ hir:: CoroutineSource :: Fn ,
751
+ ) ) => {
752
+ let parent_item =
753
+ tcx. hir_node_by_def_id ( hir. get_parent_item ( mir_hir_id) . def_id ) ;
754
+ let output = & parent_item
755
+ . fn_decl ( )
756
+ . expect ( "coroutine lowered from async gen fn should be in fn" )
757
+ . output ;
758
+ span = output. span ( ) ;
759
+ " of async gen function"
760
+ }
761
+
742
762
hir:: ClosureKind :: Coroutine ( hir:: CoroutineKind :: Coroutine ( _) ) => {
743
763
" of coroutine"
744
764
}
0 commit comments