diff options
Diffstat (limited to 'src/test/ui/borrowck/borrowck-overloaded-index-ref-index.rs')
-rw-r--r-- | src/test/ui/borrowck/borrowck-overloaded-index-ref-index.rs | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-ref-index.rs b/src/test/ui/borrowck/borrowck-overloaded-index-ref-index.rs deleted file mode 100644 index 8adafaa8e..000000000 --- a/src/test/ui/borrowck/borrowck-overloaded-index-ref-index.rs +++ /dev/null @@ -1,59 +0,0 @@ -use std::ops::{Index, IndexMut}; - -struct Foo { - x: isize, - y: isize, -} - -impl<'a> Index<&'a String> for Foo { - type Output = isize; - - fn index(&self, z: &String) -> &isize { - if *z == "x" { - &self.x - } else { - &self.y - } - } -} - -impl<'a> IndexMut<&'a String> for Foo { - fn index_mut(&mut self, z: &String) -> &mut isize { - if *z == "x" { - &mut self.x - } else { - &mut self.y - } - } -} - -struct Bar { - x: isize, -} - -impl Index<isize> for Bar { - type Output = isize; - - fn index<'a>(&'a self, z: isize) -> &'a isize { - &self.x - } -} - -fn main() { - let mut f = Foo { - x: 1, - y: 2, - }; - let mut s = "hello".to_string(); - let rs = &mut s; - println!("{}", f[&s]); - //~^ ERROR cannot borrow `s` as immutable because it is also borrowed as mutable - f[&s] = 10; - //~^ ERROR cannot borrow `s` as immutable because it is also borrowed as mutable - let s = Bar { - x: 1, - }; - s[2] = 20; - //~^ ERROR cannot assign to data in an index of `Bar` - drop(rs); -} |