@@ -1555,7 +1555,11 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
15551555 // Ignore unused self.
15561556 let name = path1. node ;
15571557 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+ }
15591563 }
15601564 } )
15611565 }
@@ -1609,11 +1613,19 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
16091613 ln : LiveNode ,
16101614 var : Variable ) {
16111615 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 {
16141626 self . ir . tcx . sess . add_lint ( lint:: builtin:: UNUSED_ASSIGNMENTS , id, sp,
16151627 format ! ( "value assigned to `{}` is never read" , name) ) ;
16161628 }
16171629 }
16181630 }
1619- }
1631+ }
0 commit comments