]> git.lizzy.rs Git - rust.git/commitdiff
Warn unused_assignments for arguments
authorSeo Sanghyeon <sanxiyn@gmail.com>
Tue, 3 Nov 2015 10:04:36 +0000 (19:04 +0900)
committerSeo Sanghyeon <sanxiyn@gmail.com>
Tue, 3 Nov 2015 10:04:36 +0000 (19:04 +0900)
src/librustc/middle/liveness.rs
src/test/compile-fail/liveness-dead.rs

index 3b56597d353a308b7c0bf695d892ae137ed4724d..b25ad66fd1fa57be9fd117e3e3e8d14e09a1d650 100644 (file)
@@ -1555,7 +1555,11 @@ fn warn_about_unused_args(&self, decl: &hir::FnDecl, entry_ln: LiveNode) {
                 // Ignore unused self.
                 let name = path1.node;
                 if name != special_idents::self_.name {
-                    self.warn_about_unused(sp, p_id, entry_ln, var);
+                    if !self.warn_about_unused(sp, p_id, entry_ln, var) {
+                        if self.live_on_entry(entry_ln, var).is_none() {
+                            self.report_dead_assign(p_id, sp, var, true);
+                        }
+                    }
                 }
             })
         }
@@ -1609,11 +1613,19 @@ fn warn_about_dead_assign(&self,
                               ln: LiveNode,
                               var: Variable) {
         if self.live_on_exit(ln, var).is_none() {
-            let r = self.should_warn(var);
-            if let Some(name) = r {
+            self.report_dead_assign(id, sp, var, false);
+        }
+    }
+
+    fn report_dead_assign(&self, id: NodeId, sp: Span, var: Variable, is_argument: bool) {
+        if let Some(name) = self.should_warn(var) {
+            if is_argument {
+                self.ir.tcx.sess.add_lint(lint::builtin::UNUSED_ASSIGNMENTS, id, sp,
+                    format!("value passed to `{}` is never read", name));
+            } else {
                 self.ir.tcx.sess.add_lint(lint::builtin::UNUSED_ASSIGNMENTS, id, sp,
                     format!("value assigned to `{}` is never read", name));
             }
         }
     }
- }
+}
index dc7b0fc4fd0f2cca79d8f6dda08c08a0585543ab..ddd8fc68c43a3ef8caaab3a9c61f8ab45659b507 100644 (file)
@@ -27,4 +27,14 @@ fn f3() {
     x = 4; //~ ERROR: value assigned to `x` is never read
 }
 
+fn f4(mut x: i32) { //~ ERROR: value passed to `x` is never read
+    x = 4;
+    x.clone();
+}
+
+fn f5(mut x: i32) {
+    x.clone();
+    x = 4; //~ ERROR: value assigned to `x` is never read
+}
+
 fn main() {}