//@ run-rustfix

// Suggest providing a std::ptr::null{,_mut}() to a function that takes in a raw
// pointer if a literal 0 was provided by the user.

extern "C" {
    fn foo(ptr: *const u8);

    fn foo_mut(ptr: *mut u8);

    fn usize(ptr: *const usize);

    fn usize_mut(ptr: *mut usize);
}

fn main() {
    unsafe {
        foo(std::ptr::null());
        //~^ mismatched types [E0308]
        //~| if you meant to create a null pointer, use `std::ptr::null()`
        foo_mut(std::ptr::null_mut());
        //~^ mismatched types [E0308]
        //~| if you meant to create a null pointer, use `std::ptr::null_mut()`
        usize(std::ptr::null());
        //~^ mismatched types [E0308]
        //~| if you meant to create a null pointer, use `std::ptr::null()`
        usize_mut(std::ptr::null_mut());
        //~^ mismatched types [E0308]
        //~| if you meant to create a null pointer, use `std::ptr::null_mut()`
    }
}
