Auto merge of #5402 - pmk21:allow-let-underscore-must-use, r=flip1995

Allow let_underscore_must_use to be ignored

changelog: none
Fixes #5366
This commit is contained in:
bors 2020-04-01 21:43:44 +00:00
commit 7ebb3aa55d
2 changed files with 9 additions and 7 deletions

View File

@ -1,5 +1,5 @@
use if_chain::if_chain; use if_chain::if_chain;
use rustc_hir::{PatKind, Stmt, StmtKind}; use rustc_hir::{Local, PatKind};
use rustc_lint::{LateContext, LateLintPass}; use rustc_lint::{LateContext, LateLintPass};
use rustc_middle::lint::in_external_macro; use rustc_middle::lint::in_external_macro;
use rustc_session::{declare_lint_pass, declare_tool_lint}; use rustc_session::{declare_lint_pass, declare_tool_lint};
@ -66,13 +66,12 @@ const SYNC_GUARD_PATHS: [&[&str]; 3] = [
]; ];
impl<'a, 'tcx> LateLintPass<'a, 'tcx> for LetUnderscore { impl<'a, 'tcx> LateLintPass<'a, 'tcx> for LetUnderscore {
fn check_stmt(&mut self, cx: &LateContext<'_, '_>, stmt: &Stmt<'_>) { fn check_local(&mut self, cx: &LateContext<'_, '_>, local: &Local<'_>) {
if in_external_macro(cx.tcx.sess, stmt.span) { if in_external_macro(cx.tcx.sess, local.span) {
return; return;
} }
if_chain! { if_chain! {
if let StmtKind::Local(ref local) = stmt.kind;
if let PatKind::Wild = local.pat.kind; if let PatKind::Wild = local.pat.kind;
if let Some(ref init) = local.init; if let Some(ref init) = local.init;
then { then {
@ -81,7 +80,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for LetUnderscore {
span_lint_and_help( span_lint_and_help(
cx, cx,
LET_UNDERSCORE_LOCK, LET_UNDERSCORE_LOCK,
stmt.span, local.span,
"non-binding let on a synchronization lock", "non-binding let on a synchronization lock",
"consider using an underscore-prefixed named \ "consider using an underscore-prefixed named \
binding or dropping explicitly with `std::mem::drop`" binding or dropping explicitly with `std::mem::drop`"
@ -90,7 +89,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for LetUnderscore {
span_lint_and_help( span_lint_and_help(
cx, cx,
LET_UNDERSCORE_MUST_USE, LET_UNDERSCORE_MUST_USE,
stmt.span, local.span,
"non-binding let on an expression with `#[must_use]` type", "non-binding let on an expression with `#[must_use]` type",
"consider explicitly using expression value" "consider explicitly using expression value"
) )
@ -98,7 +97,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for LetUnderscore {
span_lint_and_help( span_lint_and_help(
cx, cx,
LET_UNDERSCORE_MUST_USE, LET_UNDERSCORE_MUST_USE,
stmt.span, local.span,
"non-binding let on a result of a `#[must_use]` function", "non-binding let on a result of a `#[must_use]` function",
"consider explicitly using function result" "consider explicitly using function result"
) )

View File

@ -88,4 +88,7 @@ fn main() {
let _ = a.map(|_| ()); let _ = a.map(|_| ());
let _ = a; let _ = a;
#[allow(clippy::let_underscore_must_use)]
let _ = a;
} }