#![allow(unused_imports, 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
}
