fn main() {
    let u = 5 as bool; //~ ERROR cannot cast `i32` as `bool`
                       //~| HELP compare with zero instead
                       //~| SUGGESTION != 0

    let t = (1 + 2) as bool; //~ ERROR cannot cast `i32` as `bool`
                             //~| HELP compare with zero instead
                             //~| SUGGESTION != 0

    let _ = 5_u32 as bool; //~ ERROR cannot cast `u32` as `bool`
                           //~| HELP compare with zero instead

    let _ = 64.0_f64 as bool; //~ ERROR cannot cast `f64` as `bool`
                              //~| HELP compare with zero instead

    // Enums that can normally be cast to integers can't be cast to `bool`, just like integers.
    // Note that enums that cannot be cast to integers can't be cast to anything at *all*
    // so that's not tested here.
    enum IntEnum {
        Zero,
        One,
        Two
    }
    let _ = IntEnum::One as bool; //~ ERROR cannot cast `IntEnum` as `bool`

    fn uwu(_: u8) -> String {
        todo!()
    }

    unsafe fn owo() {}

    // fn item to bool
    let _ = uwu as bool; //~ ERROR cannot cast `fn(u8) -> String {uwu}` as `bool`
    // unsafe fn item
    let _ = owo as bool; //~ ERROR cannot cast `unsafe fn() {owo}` as `bool`

    // fn ptr to bool
    let _ = uwu as fn(u8) -> String as bool; //~ ERROR cannot cast `fn(u8) -> String` as `bool`

    let _ = 'x' as bool; //~ ERROR cannot cast `char` as `bool`

    let ptr = 1 as *const ();

    let _ = ptr as bool; //~ ERROR cannot cast `*const ()` as `bool`

    let v = "hello" as bool;
    //~^ ERROR casting `&'static str` as `bool` is invalid
    //~| HELP consider using the `is_empty` method on `&'static str` to determine if it contains anything
}
