#![warn(clippy::readonly_write_lock)]

use std::sync::RwLock;

fn mutate_i32(x: &mut i32) {
    *x += 1;
}

fn accept_i32(_: i32) {}

fn main() {
    let lock = RwLock::new(42);
    let lock2 = RwLock::new(1234);

    {
        let writer = lock.read().unwrap();
        //~^ readonly_write_lock

        dbg!(&writer);
    }

    {
        let writer = lock.read().unwrap();
        //~^ readonly_write_lock

        accept_i32(*writer);
    }

    {
        let mut writer = lock.write().unwrap();
        mutate_i32(&mut writer);
        dbg!(&writer);
    }

    {
        let mut writer = lock.write().unwrap();
        *writer += 1;
    }

    {
        let mut writer1 = lock.write().unwrap();
        let mut writer2 = lock2.write().unwrap();
        *writer2 += 1;
        *writer1 = *writer2;
    }
}

fn issue12733(rw: &RwLock<()>) {
    let _write_guard = rw.write().unwrap();
}
