#![allow(clippy::needless_return)]
#![warn(clippy::flat_map_identity)]

use std::convert;

fn main() {
    let iterator = [[0, 1], [2, 3], [4, 5]].iter();
    let _ = iterator.flatten();
    //~^ flat_map_identity

    let iterator = [[0, 1], [2, 3], [4, 5]].iter();
    let _ = iterator.flatten();
    //~^ flat_map_identity

    let iterator = [[0, 1], [2, 3], [4, 5]].iter();
    let _ = iterator.flatten();
    //~^ flat_map_identity
}

fn issue15198() {
    let x = [[1, 2], [3, 4]];
    // don't lint: this is an `Iterator<Item = &[i32, i32]>`
    // match ergonomics makes the binding patterns into references
    // so that its type changes to `Iterator<Item = [&i32, &i32]>`
    let _ = x.iter().flat_map(|[x, y]| [x, y]);
    let _ = x.iter().flat_map(|x| [x[0]]);

    // no match ergonomics for `[i32, i32]`
    let _ = x.iter().copied().flatten();
    //~^ flat_map_identity
}
