diff options
| author | Ulrik Sverdrup <bluss@users.noreply.github.com> | 2016-03-04 21:44:45 +0100 |
|---|---|---|
| committer | Ulrik Sverdrup <bluss@users.noreply.github.com> | 2016-03-04 21:47:15 +0100 |
| commit | d5b6599ab64b2e44d2fe13eea884e2369ffdaa47 (patch) | |
| tree | 2238fcb1a5e84d033ef13f4a031fc19881ce8a08 /src/test | |
| parent | a03222c2b16648c466f836d5eec425fc3c648aa4 (diff) | |
| download | rust-d5b6599ab64b2e44d2fe13eea884e2369ffdaa47.tar.gz rust-d5b6599ab64b2e44d2fe13eea884e2369ffdaa47.zip | |
Add liveness test for unused_assignments for tricky lhs
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/compile-fail/liveness-unused.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/test/compile-fail/liveness-unused.rs b/src/test/compile-fail/liveness-unused.rs index 0fee48a8c6c..ddc120b8646 100644 --- a/src/test/compile-fail/liveness-unused.rs +++ b/src/test/compile-fail/liveness-unused.rs @@ -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() { } |
