rust/tests
Philipp Krones 378ba2e03e
Rollup merge of #5846 - dima74:map_flatten.map_to_option, r=flip1995
Handle mapping to Option in `map_flatten` lint

Fixes #4496

The existing [`map_flatten`](https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten) lint suggests changing `expr.map(...).flatten()` to `expr.flat_map(...)` when `expr` is `Iterator`. This PR changes suggestion to `filter_map` instead of `flat_map` when mapping to `Option`, because it is more natural

Also here are some questions:
* If expression has type which implements `Iterator` trait (`match_trait_method(cx, expr, &paths::ITERATOR) == true`), how can I get type of iterator elements? Currently I use return type of closure inside `map`, but probably it is not good way
* I would like to change suggestion range to cover only `.map(...).flatten()`, that is from:
```
    let _: Vec<_> = vec![5_i8; 6].into_iter().map(|x| 0..x).flatten().collect();
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try using `flat_map` instead: `vec![5_i8; 6].into_iter().flat_map
```
to
```
    let _: Vec<_> = vec![5_i8; 6].into_iter().map(|x| 0..x).flatten().collect();
                                             ^^^^^^^^^^^^^^^^^^^^^^^^ help: try using `flat_map` instead: `.flat_map(|x| 0..x)`
```
Is it ok?
* Is `map_flatten` lint intentionally in `pedantic` category, or could it be moved to `complexity`?

changelog: Handle mapping to Option in [`map_flatten`](https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten) lint
2020-08-04 12:06:39 +02:00
..
auxiliary Remove all copyright license headers 2019-01-08 21:46:39 +01:00
cargo Use current_dir instead of cargo_metadata 2020-02-10 16:42:50 +01:00
ui Rollup merge of #5846 - dima74:map_flatten.map_to_option, r=flip1995 2020-08-04 12:06:39 +02:00
ui-cargo Merge commit '2ca58e7dda' into clippyup 2020-07-14 14:59:59 +02:00
ui-toml Merge commit '2ca58e7dda' into clippyup 2020-07-14 14:59:59 +02:00
compile-test.rs Fix ui-cargo tests in CI 2020-08-03 18:18:11 +02:00
dogfood.rs Fix error E0460 when compiled on Rustc repo 2020-02-09 19:02:27 +07:00
fmt.rs Apply review comments 2020-02-12 09:34:28 +01:00
integration.rs Explain panic on E0463 in integration tests 2020-04-13 22:12:57 +02:00
missing-test-files.rs cargo fmt 2019-06-21 16:47:34 +02:00
versioncheck.rs test(versioncheck): Use .no_deps() 2019-01-25 21:53:44 +01:00