#![warn(clippy::manual_ok_or)]
#![allow(clippy::or_fun_call)]
#![allow(clippy::disallowed_names)]
#![allow(clippy::redundant_closure)]
#![allow(dead_code)]
#![allow(unused_must_use)]

fn main() {
    // basic case
    let foo: Option<i32> = None;
    foo.ok_or("error");
    //~^ manual_ok_or

    // eta expansion case
    foo.ok_or("error");
    //~^ manual_ok_or

    // turbo fish syntax
    None::<i32>.ok_or("error");
    //~^ manual_ok_or

    // multiline case
    #[rustfmt::skip]
    foo.ok_or(&format!(
        "{}{}{}{}{}{}{}",
        "Alice", "Bob", "Sarah", "Marc", "Sandra", "Eric", "Jenifer"));

    // not applicable, closure isn't direct `Ok` wrapping
    foo.map_or(Err("error"), |v| Ok(v + 1));

    // not applicable, or side isn't `Result::Err`
    foo.map_or(Ok::<i32, &str>(1), |v| Ok(v));

    // not applicable, expr is not a `Result` value
    foo.map_or(42, |v| v);

    // TODO patterns not covered yet
    match foo {
        Some(v) => Ok(v),
        None => Err("error"),
    };
    foo.map_or_else(|| Err("error"), |v| Ok(v));
}
