Skip to content

Commit 4ee11cd

Browse files
committed
Auto merge of #29536 - sanxiyn:unused-assign-arg, r=alexcrichton
Fix #29136.
2 parents 8fa8684 + 61e5b6d commit 4ee11cd

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

src/librustc/middle/liveness.rs

+16-4
Original file line numberDiff line numberDiff line change
@@ -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+
}

src/test/compile-fail/liveness-dead.rs

+10
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,14 @@ fn f3() {
2727
x = 4; //~ ERROR: value assigned to `x` is never read
2828
}
2929

30+
fn f4(mut x: i32) { //~ ERROR: value passed to `x` is never read
31+
x = 4;
32+
x.clone();
33+
}
34+
35+
fn f5(mut x: i32) {
36+
x.clone();
37+
x = 4; //~ ERROR: value assigned to `x` is never read
38+
}
39+
3040
fn main() {}

0 commit comments

Comments
 (0)