@@ -553,9 +553,22 @@ impl<'a, 'tcx> Visitor<'tcx> for DeadVisitor<'a, 'tcx> {
553
553
554
554
fn visit_item ( & mut self , item : & ' tcx hir:: Item ) {
555
555
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
+ } ;
556
569
self . warn_dead_code (
557
570
item. id ,
558
- item . span ,
571
+ span,
559
572
item. name ,
560
573
item. node . descriptive_variant ( )
561
574
) ;
@@ -570,8 +583,7 @@ impl<'a, 'tcx> Visitor<'tcx> for DeadVisitor<'a, 'tcx> {
570
583
g : & ' tcx hir:: Generics ,
571
584
id : ast:: NodeId ) {
572
585
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" ) ;
575
587
} else {
576
588
intravisit:: walk_variant ( self , variant, g, id) ;
577
589
}
@@ -596,15 +608,17 @@ impl<'a, 'tcx> Visitor<'tcx> for DeadVisitor<'a, 'tcx> {
596
608
match impl_item. node {
597
609
hir:: ImplItemKind :: Const ( _, body_id) => {
598
610
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" ) ;
601
615
}
602
616
self . visit_nested_body ( body_id)
603
617
}
604
618
hir:: ImplItemKind :: Method ( _, body_id) => {
605
619
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" ) ;
608
622
}
609
623
self . visit_nested_body ( body_id)
610
624
}
0 commit comments