// run-pass
// run-rustfix

fn main() {
    let small = [1, 2];
    let big = [0u8; 33];

    // Expressions that should trigger the lint
    small.iter();
    //~^ WARNING this method call currently resolves to `<&[T; N] as IntoIterator>::into_iter`
    //~| WARNING this was previously accepted by the compiler but is being phased out
    [1, 2].iter();
    //~^ WARNING this method call currently resolves to `<&[T; N] as IntoIterator>::into_iter`
    //~| WARNING this was previously accepted by the compiler but is being phased out
    big.iter();
    //~^ WARNING this method call currently resolves to `<&[T] as IntoIterator>::into_iter`
    //~| WARNING this was previously accepted by the compiler but is being phased out
    [0u8; 33].iter();
    //~^ WARNING this method call currently resolves to `<&[T] as IntoIterator>::into_iter`
    //~| WARNING this was previously accepted by the compiler but is being phased out


    // Expressions that should not
    (&[1, 2]).into_iter();
    (&small).into_iter();
    (&[0u8; 33]).into_iter();
    (&big).into_iter();

    for _ in &[1, 2] {}
    (&small as &[_]).into_iter();
    small[..].into_iter();
    std::iter::IntoIterator::into_iter(&[1, 2]);
}
