#![warn(clippy::manual_range_contains)]
#![allow(unused)]
#![allow(clippy::no_effect)]
#![allow(clippy::short_circuit_statement)]
#![allow(clippy::unnecessary_operation)]
#![allow(clippy::impossible_comparisons)]
#![allow(clippy::redundant_comparisons)]

fn main() {
    let x = 9_i32;

    // order shouldn't matter
    (8..12).contains(&x);
    //~^ manual_range_contains
    (21..42).contains(&x);
    //~^ manual_range_contains
    (1..100).contains(&x);
    //~^ manual_range_contains

    // also with inclusive ranges
    (9..=99).contains(&x);
    //~^ manual_range_contains
    (1..=33).contains(&x);
    //~^ manual_range_contains
    (1..=999).contains(&x);
    //~^ manual_range_contains

    // and the outside
    !(8..12).contains(&x);
    //~^ manual_range_contains
    !(21..42).contains(&x);
    //~^ manual_range_contains
    !(1..100).contains(&x);
    //~^ manual_range_contains

    // also with the outside of inclusive ranges
    !(9..=99).contains(&x);
    //~^ manual_range_contains
    !(1..=33).contains(&x);
    //~^ manual_range_contains
    !(1..=999).contains(&x);
    //~^ manual_range_contains

    // not a range.contains
    x > 8 && x < 12; // lower bound not inclusive
    x < 8 && x <= 12; // same direction
    x >= 12 && 12 >= x; // same bounds
    x < 8 && x > 12; // wrong direction

    x <= 8 || x >= 12;
    x >= 8 || x >= 12;
    x < 12 || 12 < x;
    x >= 8 || x <= 12;

    // Fix #6315
    let y = 3.;
    (0. ..1.).contains(&y);
    //~^ manual_range_contains
    !(0. ..=1.).contains(&y);
    //~^ manual_range_contains

    // handle negatives #8721
    (-10..=10).contains(&x);
    //~^ manual_range_contains
    x >= 10 && x <= -10;
    (-3. ..=3.).contains(&y);
    //~^ manual_range_contains
    y >= 3. && y <= -3.;

    // Fix #8745
    let z = 42;
    (0..=10).contains(&x) && (0..=10).contains(&z);
    //~^ manual_range_contains
    //~| manual_range_contains
    !(0..10).contains(&x) || !(0..10).contains(&z);
    //~^ manual_range_contains
    //~| manual_range_contains
    // Make sure operators in parens don't give a breaking suggestion
    ((x % 2 == 0) || (x < 0)) || (x >= 10);
}

// Fix #6373
pub const fn in_range(a: i32) -> bool {
    3 <= a && a <= 20
}

#[clippy::msrv = "1.34"]
fn msrv_1_34() {
    let x = 5;
    x >= 8 && x < 34;
}

#[clippy::msrv = "1.35"]
fn msrv_1_35() {
    let x = 5;
    (8..35).contains(&x);
    //~^ manual_range_contains
}
