// Tests that unsafe extern fn pointers do not implement any Fn traits. use std::ops::{Fn, FnMut, FnOnce}; extern "C" fn square(x: &isize) -> isize { (*x) * (*x) } fn call_it isize>(_: &F, _: isize) -> isize { 0 } fn call_it_mut isize>(_: &mut F, _: isize) -> isize { 0 } fn call_it_once isize>(_: F, _: isize) -> isize { 0 } fn a() { let x = call_it(&square, 22); //~^ ERROR E0277 } fn b() { let y = call_it_mut(&mut square, 22); //~^ ERROR E0277 } fn c() { let z = call_it_once(square, 22); //~^ ERROR E0277 } fn main() {}