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