about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTakayuki Nakata <f.seasons017@gmail.com>2023-03-03 22:41:39 +0900
committerTakayuki Nakata <f.seasons017@gmail.com>2023-03-03 22:41:39 +0900
commit027f19c8b911458722511be4ffc469f505766ffa (patch)
treeb775a7507a45627696d60274085aeaf43757130c
parent8b65632b6ef737979d42f83664271d6baa8c0270 (diff)
downloadrust-027f19c8b911458722511be4ffc469f505766ffa.tar.gz
rust-027f19c8b911458722511be4ffc469f505766ffa.zip
Fix FP for `let_unit_value` when `await` used
-rw-r--r--clippy_lints/src/unit_types/let_unit_value.rs6
-rw-r--r--tests/ui/let_unit.fixed4
-rw-r--r--tests/ui/let_unit.rs4
3 files changed, 13 insertions, 1 deletions
diff --git a/clippy_lints/src/unit_types/let_unit_value.rs b/clippy_lints/src/unit_types/let_unit_value.rs
index d6167a62169..3430b6e3734 100644
--- a/clippy_lints/src/unit_types/let_unit_value.rs
+++ b/clippy_lints/src/unit_types/let_unit_value.rs
@@ -5,7 +5,7 @@ use clippy_utils::visitors::{for_each_local_assignment, for_each_value_source};
 use core::ops::ControlFlow;
 use rustc_errors::Applicability;
 use rustc_hir::def::{DefKind, Res};
-use rustc_hir::{Expr, ExprKind, HirId, HirIdSet, Local, Node, PatKind, QPath, TyKind};
+use rustc_hir::{Expr, ExprKind, HirId, HirIdSet, Local, MatchSource, Node, PatKind, QPath, TyKind};
 use rustc_lint::{LateContext, LintContext};
 use rustc_middle::lint::in_external_macro;
 use rustc_middle::ty;
@@ -41,6 +41,10 @@ pub(super) fn check<'tcx>(cx: &LateContext<'tcx>, local: &'tcx Local<'_>) {
                 );
             }
         } else {
+            if let ExprKind::Match(_, _, MatchSource::AwaitDesugar) = init.kind {
+                return
+            }
+
             span_lint_and_then(
                 cx,
                 LET_UNIT_VALUE,
diff --git a/tests/ui/let_unit.fixed b/tests/ui/let_unit.fixed
index 6343cff0f7f..76ff0645f41 100644
--- a/tests/ui/let_unit.fixed
+++ b/tests/ui/let_unit.fixed
@@ -175,3 +175,7 @@ fn attributes() {
     #[expect(clippy::let_unit_value)]
     let _ = f();
 }
+
+async fn issue10433() {
+    let _pending: () = std::future::pending().await;
+}
diff --git a/tests/ui/let_unit.rs b/tests/ui/let_unit.rs
index c9bb2849f5c..895ccfe366a 100644
--- a/tests/ui/let_unit.rs
+++ b/tests/ui/let_unit.rs
@@ -175,3 +175,7 @@ fn attributes() {
     #[expect(clippy::let_unit_value)]
     let _ = f();
 }
+
+async fn issue10433() {
+    let _pending: () = std::future::pending().await;
+}