]>
Commit | Line | Data |
---|---|---|
1a4d82fc JJ |
1 | // Tests that unsafe extern fn pointers do not implement any Fn traits. |
2 | ||
1a4d82fc JJ |
3 | use std::ops::{Fn,FnMut,FnOnce}; |
4 | ||
5 | unsafe fn square(x: &isize) -> isize { (*x) * (*x) } | |
6 | ||
7 | fn call_it<F:Fn(&isize)->isize>(_: &F, _: isize) -> isize { 0 } | |
8 | fn call_it_mut<F:FnMut(&isize)->isize>(_: &mut F, _: isize) -> isize { 0 } | |
9 | fn call_it_once<F:FnOnce(&isize)->isize>(_: F, _: isize) -> isize { 0 } | |
10 | ||
11 | fn a() { | |
85aaf69f | 12 | let x = call_it(&square, 22); |
54a0048b | 13 | //~^ ERROR E0277 |
0731742a | 14 | //~| ERROR expected |
1a4d82fc JJ |
15 | } |
16 | ||
17 | fn b() { | |
c34b1796 | 18 | let y = call_it_mut(&mut square, 22); |
54a0048b | 19 | //~^ ERROR E0277 |
0731742a | 20 | //~| ERROR expected |
1a4d82fc JJ |
21 | } |
22 | ||
23 | fn c() { | |
c34b1796 | 24 | let z = call_it_once(square, 22); |
54a0048b | 25 | //~^ ERROR E0277 |
1a4d82fc JJ |
26 | } |
27 | ||
28 | fn main() { } |