#![allow(clippy::iter_next_slice, clippy::needless_return)]

fn no_break_or_continue_loop() {
    if let Some(i) = [1, 2, 3].iter().next() {
        //~^ never_loop
        return;
    }
}

fn no_break_or_continue_loop_outer() {
    if let Some(i) = [1, 2, 3].iter().next() {
        //~^ never_loop
        return;
        loop {
            if true {
                continue;
            }
        }
    }
}
