@@ -683,38 +683,36 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
683683
684684 let encl_item_id = self . tcx . hir ( ) . get_parent_item ( expr. hir_id ) ;
685685
686- if self . tcx . hir ( ) . maybe_body_owned_by ( encl_item_id) . is_some ( ) {
687- if let Some ( hir:: Node :: Item ( hir:: Item {
688- kind : hir:: ItemKind :: Fn ( ..) ,
689- span : encl_fn_span,
690- ..
691- } ) )
692- | Some ( hir:: Node :: TraitItem ( hir:: TraitItem {
693- kind : hir:: TraitItemKind :: Fn ( ..) ,
694- span : encl_fn_span,
695- ..
696- } ) )
697- | Some ( hir:: Node :: ImplItem ( hir:: ImplItem {
698- kind : hir:: ImplItemKind :: Fn ( ..) ,
699- span : encl_fn_span,
700- ..
701- } ) ) = self . tcx . hir ( ) . find ( encl_item_id)
702- {
703- // We are inside a function body, so reporting "return statement
704- // outside of function body" needs an explanation.
705-
706- let encl_body_owner_id = self . tcx . hir ( ) . enclosing_body_owner ( expr. hir_id ) ;
707-
708- // If this didn't hold, we would not have to report an error in
709- // the first place.
710- assert_ne ! ( encl_item_id, encl_body_owner_id) ;
711-
712- let encl_body_id = self . tcx . hir ( ) . body_owned_by ( encl_body_owner_id) ;
713- let encl_body = self . tcx . hir ( ) . body ( encl_body_id) ;
714-
715- err. encl_body_span = Some ( encl_body. value . span ) ;
716- err. encl_fn_span = Some ( * encl_fn_span) ;
717- }
686+ if let Some ( hir:: Node :: Item ( hir:: Item {
687+ kind : hir:: ItemKind :: Fn ( ..) ,
688+ span : encl_fn_span,
689+ ..
690+ } ) )
691+ | Some ( hir:: Node :: TraitItem ( hir:: TraitItem {
692+ kind : hir:: TraitItemKind :: Fn ( _, hir:: TraitFn :: Provided ( _) ) ,
693+ span : encl_fn_span,
694+ ..
695+ } ) )
696+ | Some ( hir:: Node :: ImplItem ( hir:: ImplItem {
697+ kind : hir:: ImplItemKind :: Fn ( ..) ,
698+ span : encl_fn_span,
699+ ..
700+ } ) ) = self . tcx . hir ( ) . find ( encl_item_id)
701+ {
702+ // We are inside a function body, so reporting "return statement
703+ // outside of function body" needs an explanation.
704+
705+ let encl_body_owner_id = self . tcx . hir ( ) . enclosing_body_owner ( expr. hir_id ) ;
706+
707+ // If this didn't hold, we would not have to report an error in
708+ // the first place.
709+ assert_ne ! ( encl_item_id, encl_body_owner_id) ;
710+
711+ let encl_body_id = self . tcx . hir ( ) . body_owned_by ( encl_body_owner_id) ;
712+ let encl_body = self . tcx . hir ( ) . body ( encl_body_id) ;
713+
714+ err. encl_body_span = Some ( encl_body. value . span ) ;
715+ err. encl_fn_span = Some ( * encl_fn_span) ;
718716 }
719717
720718 self . tcx . sess . emit_err ( err) ;
0 commit comments