]> git.lizzy.rs Git - rust.git/commitdiff
Add liveness test for unused_assignments for tricky lhs
authorUlrik Sverdrup <bluss@users.noreply.github.com>
Fri, 4 Mar 2016 20:44:45 +0000 (21:44 +0100)
committerUlrik Sverdrup <bluss@users.noreply.github.com>
Fri, 4 Mar 2016 20:47:15 +0000 (21:47 +0100)
src/test/compile-fail/liveness-unused.rs

index 0fee48a8c6c662ddeda75093ea52daf124096aae..ddc120b8646911f1faf956008ad4c7bbec3a0d10 100644 (file)
@@ -12,6 +12,8 @@
 #![deny(unused_assignments)]
 #![allow(dead_code, non_camel_case_types, trivial_numeric_casts)]
 
+use std::ops::AddAssign;
+
 fn f1(x: isize) {
     //~^ ERROR unused variable: `x`
 }
@@ -100,5 +102,30 @@ fn f5c() {
     }
 }
 
+struct View<'a>(&'a mut [i32]);
+
+impl<'a> AddAssign<i32> for View<'a> {
+    fn add_assign(&mut self, rhs: i32) {
+        for lhs in self.0.iter_mut() {
+            *lhs += rhs;
+        }
+    }
+}
+
+fn f6() {
+    let mut array = [1, 2, 3];
+    let mut v = View(&mut array);
+
+    // ensure an error shows up for x even if lhs of an overloaded add assign
+
+    let x;
+    //~^ ERROR variable `x` is assigned to, but never used
+
+    *({
+        x = 0;  //~ ERROR value assigned to `x` is never read
+        &mut v
+    }) += 1;
+}
+
 fn main() {
 }