diff options
Diffstat (limited to 'src/test/ui/borrowck/borrowck-overloaded-call.rs')
-rw-r--r-- | src/test/ui/borrowck/borrowck-overloaded-call.rs | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/src/test/ui/borrowck/borrowck-overloaded-call.rs b/src/test/ui/borrowck/borrowck-overloaded-call.rs deleted file mode 100644 index 7b16bf666..000000000 --- a/src/test/ui/borrowck/borrowck-overloaded-call.rs +++ /dev/null @@ -1,80 +0,0 @@ -#![feature(fn_traits, unboxed_closures)] - -use std::ops::{Fn, FnMut, FnOnce}; - -struct SFn { - x: isize, - y: isize, -} - -impl Fn<(isize,)> for SFn { - extern "rust-call" fn call(&self, (z,): (isize,)) -> isize { - self.x * self.y * z - } -} - -impl FnMut<(isize,)> for SFn { - extern "rust-call" fn call_mut(&mut self, args: (isize,)) -> isize { self.call(args) } -} - -impl FnOnce<(isize,)> for SFn { - type Output = isize; - extern "rust-call" fn call_once(self, args: (isize,)) -> isize { self.call(args) } -} - -struct SFnMut { - x: isize, - y: isize, -} - -impl FnMut<(isize,)> for SFnMut { - extern "rust-call" fn call_mut(&mut self, (z,): (isize,)) -> isize { - self.x * self.y * z - } -} - -impl FnOnce<(isize,)> for SFnMut { - type Output = isize; - extern "rust-call" fn call_once(mut self, args: (isize,)) -> isize { self.call_mut(args) } -} - -struct SFnOnce { - x: String, -} - -impl FnOnce<(String,)> for SFnOnce { - type Output = usize; - - extern "rust-call" fn call_once(self, (z,): (String,)) -> usize { - self.x.len() + z.len() - } -} - -fn f() { - let mut s = SFn { - x: 1, - y: 2, - }; - let sp = &mut s; - s(3); //~ ERROR cannot borrow `s` as immutable because it is also borrowed as mutable - use_mut(sp); -} -fn g() { - let s = SFnMut { - x: 1, - y: 2, - }; - s(3); //~ ERROR cannot borrow `s` as mutable, as it is not declared as mutable -} - -fn h() { - let s = SFnOnce { - x: "hello".to_string(), - }; - s(" world".to_string()); - s(" world".to_string()); //~ ERROR use of moved value: `s` -} - -fn main() {} - -fn use_mut<T>(_: &mut T) { } |