| #![warn(clippy::mutex_integer)] |
| #![warn(clippy::mutex_atomic)] |
| #![allow(clippy::borrow_as_ptr)] |
| |
| use std::sync::Mutex; |
| |
| fn main() { |
| let _ = std::sync::atomic::AtomicBool::new(true); |
| //~^ mutex_atomic |
| |
| let _ = std::sync::atomic::AtomicUsize::new(5usize); |
| //~^ mutex_atomic |
| |
| let _ = std::sync::atomic::AtomicIsize::new(9isize); |
| //~^ mutex_atomic |
| |
| let mut x = 4u32; |
| // `AtomicPtr` only accepts `*mut T`, so this should not lint |
| let _ = Mutex::new(&x as *const u32); |
| |
| let _ = std::sync::atomic::AtomicPtr::new(&mut x as *mut u32); |
| //~^ mutex_atomic |
| |
| let _ = std::sync::atomic::AtomicU32::new(0u32); |
| //~^ mutex_integer |
| |
| let _ = std::sync::atomic::AtomicI32::new(0i32); |
| //~^ mutex_integer |
| |
| let _ = Mutex::new(0f32); // there are no float atomics, so this should not lint |
| let _ = std::sync::atomic::AtomicU8::new(0u8); |
| //~^ mutex_integer |
| |
| let _ = std::sync::atomic::AtomicI16::new(0i16); |
| //~^ mutex_integer |
| |
| let _x = std::sync::atomic::AtomicI8::new(0); |
| //~^ mutex_integer |
| |
| const X: i64 = 0; |
| let _ = std::sync::atomic::AtomicI64::new(X); |
| //~^ mutex_integer |
| |
| // there are no 128 atomics, so these two should not lint |
| { |
| let _ = Mutex::new(0u128); |
| let _x: Mutex<i128> = Mutex::new(0); |
| } |
| } |
| |
| // don't lint on _use_, only declaration |
| fn issue13378() { |
| static MTX: std::sync::atomic::AtomicU32 = std::sync::atomic::AtomicU32::new(0); |
| //~^ mutex_integer |
| |
| let mtx = std::sync::atomic::AtomicI32::new(0); |
| //~^ mutex_integer |
| // This will still lint, since we're reassigning the mutex to a variable -- oh well. |
| // But realistically something like this won't really come up. |
| let reassigned = mtx; |
| //~^ mutex_integer |
| |
| // don't eat the `)` when removing the type ascription -- see |
| // https://github.com/rust-lang/rust-clippy/issues/15377 |
| let (funky_mtx) = std::sync::atomic::AtomicU64::new(0); |
| //~^ mutex_integer |
| } |