Use 'span_lint_and_sugg'

This commit is contained in:
Jeremy Stucki 2019-08-12 21:42:57 +02:00
parent 3a65e4e75a
commit d51136d594
No known key found for this signature in database
GPG Key ID: EEFCA93148042655
3 changed files with 21 additions and 11 deletions

View File

@ -2176,7 +2176,17 @@ fn lint_flat_map_identity<'a, 'tcx>(
let arg_node = &flat_map_args[1].node; let arg_node = &flat_map_args[1].node;
let apply_lint = |message: &str| { let apply_lint = |message: &str| {
span_lint(cx, FLAT_MAP_IDENTITY, expr.span, message); if let hir::ExprKind::MethodCall(_, span, _) = &expr.node {
span_lint_and_sugg(
cx,
FLAT_MAP_IDENTITY,
*span,
message,
"try",
"flatten()".to_string(),
Applicability::MachineApplicable,
);
}
}; };
if_chain! { if_chain! {
@ -2190,8 +2200,7 @@ fn lint_flat_map_identity<'a, 'tcx>(
if path.segments[0].ident.as_str() == binding_ident.as_str(); if path.segments[0].ident.as_str() == binding_ident.as_str();
then { then {
apply_lint("called `flat_map(|x| x)` on an `Iterator`. \ apply_lint("called `flat_map(|x| x)` on an `Iterator`");
This can be simplified by calling `flatten().`");
} }
} }
@ -2201,8 +2210,7 @@ fn lint_flat_map_identity<'a, 'tcx>(
if match_qpath(qpath, &paths::STD_CONVERT_IDENTITY); if match_qpath(qpath, &paths::STD_CONVERT_IDENTITY);
then { then {
apply_lint("called `flat_map(std::convert::identity)` on an `Iterator`. \ apply_lint("called `flat_map(std::convert::identity)` on an `Iterator`");
This can be simplified by calling `flatten().`");
} }
} }
} }

View File

@ -1,3 +1,5 @@
// run-rustfix
#![warn(clippy::flat_map_identity)] #![warn(clippy::flat_map_identity)]
use std::convert; use std::convert;

View File

@ -1,16 +1,16 @@
error: called `flat_map(|x| x)` on an `Iterator`. This can be simplified by calling `flatten().` error: called `flat_map(|x| x)` on an `Iterator`
--> $DIR/unnecessary_flat_map.rs:7:5 --> $DIR/unnecessary_flat_map.rs:9:14
| |
LL | iterator.flat_map(|x| x); LL | iterator.flat_map(|x| x);
| ^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^ help: try: `flatten()`
| |
= note: `-D clippy::flat-map-identity` implied by `-D warnings` = note: `-D clippy::flat-map-identity` implied by `-D warnings`
error: called `flat_map(std::convert::identity)` on an `Iterator`. This can be simplified by calling `flatten().` error: called `flat_map(std::convert::identity)` on an `Iterator`
--> $DIR/unnecessary_flat_map.rs:10:23 --> $DIR/unnecessary_flat_map.rs:12:14
| |
LL | iterator.flat_map(convert::identity); LL | iterator.flat_map(convert::identity);
| ^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `flatten()`
error: aborting due to 2 previous errors error: aborting due to 2 previous errors