| #![feature(rustc_attrs)] | |
| macro_rules! width( | |
| ($this:expr) => { | |
| $this.width.unwrap() | |
| //~^ ERROR cannot use `self.width` because it was mutably borrowed | |
| } | |
| ); | |
| struct HasInfo { | |
| width: Option<usize> | |
| } | |
| impl HasInfo { | |
| fn get_size(&mut self, n: usize) -> usize { | |
| n | |
| } | |
| fn get_other(&mut self) -> usize { | |
| let r = &mut *self; | |
| r.get_size(width!(self)) | |
| } | |
| // Above is like `self.get_size(width!(self))`, but it | |
| // deliberately avoids NLL's two phase borrow feature. | |
| } | |
| fn main() { } |