@@ -553,9 +553,22 @@ impl<'a, 'tcx> Visitor<'tcx> for DeadVisitor<'a, 'tcx> {
553553
554554 fn visit_item ( & mut self , item : & ' tcx hir:: Item ) {
555555 if self . should_warn_about_item ( item) {
556+ // For items that have a definition with a signature followed by a
557+ // block, point only at the signature.
558+ let span = match item. node {
559+ hir:: ItemFn ( ..) |
560+ hir:: ItemMod ( ..) |
561+ hir:: ItemEnum ( ..) |
562+ hir:: ItemStruct ( ..) |
563+ hir:: ItemUnion ( ..) |
564+ hir:: ItemTrait ( ..) |
565+ hir:: ItemDefaultImpl ( ..) |
566+ hir:: ItemImpl ( ..) => self . tcx . sess . codemap ( ) . def_span ( item. span ) ,
567+ _ => item. span ,
568+ } ;
556569 self . warn_dead_code (
557570 item. id ,
558- item . span ,
571+ span,
559572 item. name ,
560573 item. node . descriptive_variant ( )
561574 ) ;
@@ -570,8 +583,7 @@ impl<'a, 'tcx> Visitor<'tcx> for DeadVisitor<'a, 'tcx> {
570583 g : & ' tcx hir:: Generics ,
571584 id : ast:: NodeId ) {
572585 if self . should_warn_about_variant ( & variant. node ) {
573- self . warn_dead_code ( variant. node . data . id ( ) , variant. span ,
574- variant. node . name , "variant" ) ;
586+ self . warn_dead_code ( variant. node . data . id ( ) , variant. span , variant. node . name , "variant" ) ;
575587 } else {
576588 intravisit:: walk_variant ( self , variant, g, id) ;
577589 }
@@ -596,15 +608,17 @@ impl<'a, 'tcx> Visitor<'tcx> for DeadVisitor<'a, 'tcx> {
596608 match impl_item. node {
597609 hir:: ImplItemKind :: Const ( _, body_id) => {
598610 if !self . symbol_is_live ( impl_item. id , None ) {
599- self . warn_dead_code ( impl_item. id , impl_item. span ,
600- impl_item. name , "associated const" ) ;
611+ self . warn_dead_code ( impl_item. id ,
612+ impl_item. span ,
613+ impl_item. name ,
614+ "associated const" ) ;
601615 }
602616 self . visit_nested_body ( body_id)
603617 }
604618 hir:: ImplItemKind :: Method ( _, body_id) => {
605619 if !self . symbol_is_live ( impl_item. id , None ) {
606- self . warn_dead_code ( impl_item . id , impl_item. span ,
607- impl_item. name , "method" ) ;
620+ let span = self . tcx . sess . codemap ( ) . def_span ( impl_item. span ) ;
621+ self . warn_dead_code ( impl_item . id , span , impl_item. name , "method" ) ;
608622 }
609623 self . visit_nested_body ( body_id)
610624 }
0 commit comments