@@ -1555,7 +1555,11 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
1555
1555
// Ignore unused self.
1556
1556
let name = path1. node ;
1557
1557
if name != special_idents:: self_. name {
1558
- self . warn_about_unused ( sp, p_id, entry_ln, var) ;
1558
+ if !self . warn_about_unused ( sp, p_id, entry_ln, var) {
1559
+ if self . live_on_entry ( entry_ln, var) . is_none ( ) {
1560
+ self . report_dead_assign ( p_id, sp, var, true ) ;
1561
+ }
1562
+ }
1559
1563
}
1560
1564
} )
1561
1565
}
@@ -1609,11 +1613,19 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
1609
1613
ln : LiveNode ,
1610
1614
var : Variable ) {
1611
1615
if self . live_on_exit ( ln, var) . is_none ( ) {
1612
- let r = self . should_warn ( var) ;
1613
- if let Some ( name) = r {
1616
+ self . report_dead_assign ( id, sp, var, false ) ;
1617
+ }
1618
+ }
1619
+
1620
+ fn report_dead_assign ( & self , id : NodeId , sp : Span , var : Variable , is_argument : bool ) {
1621
+ if let Some ( name) = self . should_warn ( var) {
1622
+ if is_argument {
1623
+ self . ir . tcx . sess . add_lint ( lint:: builtin:: UNUSED_ASSIGNMENTS , id, sp,
1624
+ format ! ( "value passed to `{}` is never read" , name) ) ;
1625
+ } else {
1614
1626
self . ir . tcx . sess . add_lint ( lint:: builtin:: UNUSED_ASSIGNMENTS , id, sp,
1615
1627
format ! ( "value assigned to `{}` is never read" , name) ) ;
1616
1628
}
1617
1629
}
1618
1630
}
1619
- }
1631
+ }
0 commit comments