add testcase for #8878

This commit is contained in:
Marcel Hellwig 2022-05-24 14:41:23 +02:00
parent 050cdd6689
commit 22673bce4c
3 changed files with 62 additions and 1 deletions

View File

@ -28,4 +28,22 @@ fn main() {
// mapping to Result on Result
let _: Result<_, &str> = (Ok(Ok(1))).and_then(|x| x);
issue8878();
}
#[allow(clippy::bind_instead_of_map)] // map + flatten will be suggested to `and_then`, but afterwards `map` is suggested again
#[rustfmt::skip] // whitespace is important for this one
fn issue8878() {
std::collections::HashMap::<u32, u32>::new()
.get(&0)
.and_then(|_| {
// we need some newlines
// so that the span is big enough
// we need some newlines
// so that the span is big enough
// for a splitted output of the diagnostic
Some("")
// whitespace beforehand is important as well
});
}

View File

@ -28,4 +28,21 @@ fn option_id(x: i8) -> Option<i8> {
// mapping to Result on Result
let _: Result<_, &str> = (Ok(Ok(1))).map(|x| x).flatten();
issue8878();
}
#[allow(clippy::bind_instead_of_map)] // map + flatten will be suggested to `and_then`, but afterwards `map` is suggested again
#[rustfmt::skip] // whitespace is important for this one
fn issue8878() {
std::collections::HashMap::<u32, u32>::new()
.get(&0)
.map(|_| {
// we need some newlines
// so that the span is big enough
// for a splitted output of the diagnostic
Some("")
// whitespace beforehand is important as well
})
.flatten();
}

View File

@ -76,5 +76,31 @@ help: try replacing `map` with `and_then`, and remove the `.flatten()`
LL | let _: Result<_, &str> = (Ok(Ok(1))).and_then(|x| x);
| ~~~~~~~~~~~~~~~
error: aborting due to 7 previous errors
error: called `map(..).flatten()` on `Option`
--> $DIR/map_flatten_fixable.rs:40:10
|
LL | .map(|_| {
| __________^
LL | | // we need some newlines
LL | | // so that the span is big enough
LL | | // for a splitted output of the diagnostic
... |
LL | | })
LL | | .flatten();
| |__________________^
|
help: try replacing `map` with `and_then`
|
LL ~ .and_then(|_| {
LL + // we need some newlines
LL + // so that the span is big enough
|
help: and remove the `.flatten()`
|
LL + Some("")
LL + // whitespace beforehand is important as well
LL ~ });
|
error: aborting due to 8 previous errors