1 // Tests that unsafe extern fn pointers do not implement any Fn traits.
3 use std::ops::{Fn,FnMut,FnOnce};
5 unsafe fn square(x: isize) -> isize { x * x }
6 // note: argument type here is `isize`, not `&isize`
8 fn call_it<F:Fn(&isize)->isize>(_: &F, _: isize) -> isize { 0 }
9 fn call_it_mut<F:FnMut(&isize)->isize>(_: &mut F, _: isize) -> isize { 0 }
10 fn call_it_once<F:FnOnce(&isize)->isize>(_: F, _: isize) -> isize { 0 }
13 let x = call_it(&square, 22);
18 let y = call_it_mut(&mut square, 22);
23 let z = call_it_once(square, 22);