From c3fde34fd53a6eed89dd30064b1985acf39f7f07 Mon Sep 17 00:00:00 2001 From: airt Date: Wed, 1 May 2019 03:09:27 +0800 Subject: [PATCH] fix suggestion for search_is_some --- clippy_lints/src/methods/mod.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/clippy_lints/src/methods/mod.rs b/clippy_lints/src/methods/mod.rs index 0b3a406bd760..83f7d2a1f9ea 100644 --- a/clippy_lints/src/methods/mod.rs +++ b/clippy_lints/src/methods/mod.rs @@ -1977,10 +1977,16 @@ fn lint_search_is_some<'a, 'tcx>( if search_snippet.lines().count() <= 1 { // suggest `any(|x| ..)` instead of `any(|&x| ..)` for `find(|&x| ..).is_some()` let any_search_snippet = - if search_method == "find" && search_snippet.starts_with("|&") { - Some(search_snippet.replacen('&', "", 1)) - } else { - None + if_chain! { + if search_method == "find"; + if let hir::ExprKind::Closure(_, _, body_id, ..) = search_args[1].node; + let closure_body = cx.tcx.hir().body(body_id); + if let hir::PatKind::Ref(..) = closure_body.arguments[0].pat.node; + then { + Some(search_snippet.replacen('&', "", 1)) + } else { + None + } }; // add note if not multi-line span_note_and_lint(