| #![allow(clippy::missing_safety_doc, clippy::uninlined_format_args)] | |
| // TOO_MANY_ARGUMENTS | |
| fn good(_one: u32, _two: u32, _three: &str, _four: bool, _five: f32, _six: f32, _seven: bool) {} | |
| fn bad(_one: u32, _two: u32, _three: &str, _four: bool, _five: f32, _six: f32, _seven: bool, _eight: ()) {} | |
| //~^ too_many_arguments | |
| #[rustfmt::skip] | |
| fn bad_multiline( | |
| //~^ too_many_arguments | |
| one: u32, | |
| two: u32, | |
| three: &str, | |
| four: bool, | |
| five: f32, | |
| six: f32, | |
| seven: bool, | |
| eight: () | |
| ) { | |
| let _one = one; | |
| let _two = two; | |
| let _three = three; | |
| let _four = four; | |
| let _five = five; | |
| let _six = six; | |
| let _seven = seven; | |
| } | |
| // don't lint extern fns | |
| extern "C" fn extern_fn( | |
| _one: u32, | |
| _two: u32, | |
| _three: *const u8, | |
| _four: bool, | |
| _five: f32, | |
| _six: f32, | |
| _seven: bool, | |
| _eight: *const std::ffi::c_void, | |
| ) { | |
| } | |
| pub trait Foo { | |
| fn good(_one: u32, _two: u32, _three: &str, _four: bool, _five: f32, _six: f32, _seven: bool); | |
| fn bad(_one: u32, _two: u32, _three: &str, _four: bool, _five: f32, _six: f32, _seven: bool, _eight: ()); | |
| //~^ too_many_arguments | |
| fn ptr(p: *const u8); | |
| } | |
| pub struct Bar; | |
| impl Bar { | |
| fn good_method(_one: u32, _two: u32, _three: &str, _four: bool, _five: f32, _six: f32, _seven: bool) {} | |
| fn bad_method(_one: u32, _two: u32, _three: &str, _four: bool, _five: f32, _six: f32, _seven: bool, _eight: ()) {} | |
| //~^ too_many_arguments | |
| } | |
| // ok, we don’t want to warn implementations | |
| impl Foo for Bar { | |
| fn good(_one: u32, _two: u32, _three: &str, _four: bool, _five: f32, _six: f32, _seven: bool) {} | |
| fn bad(_one: u32, _two: u32, _three: &str, _four: bool, _five: f32, _six: f32, _seven: bool, _eight: ()) {} | |
| fn ptr(p: *const u8) { | |
| println!("{}", unsafe { *p }); | |
| //~^ not_unsafe_ptr_arg_deref | |
| println!("{:?}", unsafe { p.as_ref() }); | |
| //~^ not_unsafe_ptr_arg_deref | |
| unsafe { std::ptr::read(p) }; | |
| //~^ not_unsafe_ptr_arg_deref | |
| } | |
| } | |
| // NOT_UNSAFE_PTR_ARG_DEREF | |
| fn private(p: *const u8) { | |
| println!("{}", unsafe { *p }); | |
| } | |
| pub fn public(p: *const u8) { | |
| println!("{}", unsafe { *p }); | |
| //~^ not_unsafe_ptr_arg_deref | |
| println!("{:?}", unsafe { p.as_ref() }); | |
| //~^ not_unsafe_ptr_arg_deref | |
| unsafe { std::ptr::read(p) }; | |
| //~^ not_unsafe_ptr_arg_deref | |
| } | |
| type Alias = *const u8; | |
| pub fn type_alias(p: Alias) { | |
| println!("{}", unsafe { *p }); | |
| //~^ not_unsafe_ptr_arg_deref | |
| println!("{:?}", unsafe { p.as_ref() }); | |
| //~^ not_unsafe_ptr_arg_deref | |
| unsafe { std::ptr::read(p) }; | |
| //~^ not_unsafe_ptr_arg_deref | |
| } | |
| impl Bar { | |
| fn private(self, p: *const u8) { | |
| println!("{}", unsafe { *p }); | |
| } | |
| pub fn public(self, p: *const u8) { | |
| println!("{}", unsafe { *p }); | |
| //~^ not_unsafe_ptr_arg_deref | |
| println!("{:?}", unsafe { p.as_ref() }); | |
| //~^ not_unsafe_ptr_arg_deref | |
| unsafe { std::ptr::read(p) }; | |
| //~^ not_unsafe_ptr_arg_deref | |
| } | |
| pub fn public_ok(self, p: *const u8) { | |
| if !p.is_null() { | |
| println!("{:p}", p); | |
| } | |
| } | |
| pub unsafe fn public_unsafe(self, p: *const u8) { | |
| println!("{}", unsafe { *p }); | |
| println!("{:?}", unsafe { p.as_ref() }); | |
| } | |
| } | |
| fn main() {} |