67 lines
1.9 KiB
Rust
67 lines
1.9 KiB
Rust
#![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
|
|
}
|