Skip to content

Commit 844c1c0

Browse files
author
ceptontech
committed
fix(manual_is_variant): Skip old versions
changelog: [`manual_is_variant`]: skip the check when the MSRV is before 1.70
1 parent 9cf8ea8 commit 844c1c0

File tree

5 files changed

+97
-61
lines changed

5 files changed

+97
-61
lines changed

clippy_lints/src/methods/manual_is_variant_and.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,10 @@ fn emit_lint<'tcx>(
190190
);
191191
}
192192

193-
pub(super) fn check_map(cx: &LateContext<'_>, expr: &Expr<'_>) {
193+
pub(super) fn check_map(cx: &LateContext<'_>, expr: &Expr<'_>, msrv: Msrv) {
194+
if !msrv.meets(cx, msrvs::OPTION_RESULT_IS_VARIANT_AND) {
195+
return;
196+
}
194197
if let Some(parent_expr) = get_parent_expr(cx, expr)
195198
&& let ExprKind::Binary(op, left, right) = parent_expr.kind
196199
&& op.span.eq_ctxt(expr.span)

clippy_lints/src/methods/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5340,7 +5340,7 @@ impl Methods {
53405340
if name == sym::map {
53415341
map_clone::check(cx, expr, recv, m_arg, self.msrv);
53425342
map_with_unused_argument_over_ranges::check(cx, expr, recv, m_arg, self.msrv, span);
5343-
manual_is_variant_and::check_map(cx, expr);
5343+
manual_is_variant_and::check_map(cx, expr, self.msrv);
53445344
match method_call(recv) {
53455345
Some((map_name @ (sym::iter | sym::into_iter), recv2, _, _, _)) => {
53465346
iter_kv_map::check(cx, map_name, expr, recv2, m_arg, self.msrv);

tests/ui/manual_is_variant_and.fixed

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ macro_rules! mac {
5050

5151
#[clippy::msrv = "1.69"]
5252
fn under_msrv_is_some_and(opt: Option<u32>, res: Result<u32, ()>) {
53+
let _ = res.map(|x| x != 0) == Ok(true);
5354
let _ = res.into_iter().any(|x| x != 0);
5455
let _ = opt.map(|x| x != 0).unwrap_or_default();
5556
let _ = opt.iter().all(|x| *x != 0);
@@ -58,6 +59,8 @@ fn under_msrv_is_some_and(opt: Option<u32>, res: Result<u32, ()>) {
5859

5960
#[clippy::msrv = "1.70"]
6061
fn meets_msrv_is_some_and(opt: Option<u32>, res: Result<u32, ()>) {
62+
let _ = res.is_ok_and(|x| x != 0);
63+
//~^ manual_is_variant_and
6164
let _ = res.is_ok_and(|x| x != 0);
6265
//~^ manual_is_variant_and
6366
let _ = opt.is_some_and(|x| x != 0);
@@ -69,6 +72,8 @@ fn meets_msrv_is_some_and(opt: Option<u32>, res: Result<u32, ()>) {
6972

7073
#[clippy::msrv = "1.81"]
7174
fn under_msrv_is_none_or(opt: Option<u32>, res: Result<u32, ()>) {
75+
let _ = res.is_ok_and(|x| x != 0);
76+
//~^ manual_is_variant_and
7277
let _ = res.is_ok_and(|x| x != 0);
7378
//~^ manual_is_variant_and
7479
let _ = opt.is_some_and(|x| x != 0);
@@ -80,6 +85,8 @@ fn under_msrv_is_none_or(opt: Option<u32>, res: Result<u32, ()>) {
8085

8186
#[clippy::msrv = "1.82"]
8287
fn meets_msrv_is_none_or(opt: Option<u32>, res: Result<u32, ()>) {
88+
let _ = res.is_ok_and(|x| x != 0);
89+
//~^ manual_is_variant_and
8390
let _ = res.is_ok_and(|x| x != 0);
8491
//~^ manual_is_variant_and
8592
let _ = opt.is_some_and(|x| x != 0);

tests/ui/manual_is_variant_and.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ macro_rules! mac {
5050

5151
#[clippy::msrv = "1.69"]
5252
fn under_msrv_is_some_and(opt: Option<u32>, res: Result<u32, ()>) {
53+
let _ = res.map(|x| x != 0) == Ok(true);
5354
let _ = res.into_iter().any(|x| x != 0);
5455
let _ = opt.map(|x| x != 0).unwrap_or_default();
5556
let _ = opt.iter().all(|x| *x != 0);
@@ -58,6 +59,8 @@ fn under_msrv_is_some_and(opt: Option<u32>, res: Result<u32, ()>) {
5859

5960
#[clippy::msrv = "1.70"]
6061
fn meets_msrv_is_some_and(opt: Option<u32>, res: Result<u32, ()>) {
62+
let _ = res.map(|x| x != 0) == Ok(true);
63+
//~^ manual_is_variant_and
6164
let _ = res.into_iter().any(|x| x != 0);
6265
//~^ manual_is_variant_and
6366
let _ = opt.map(|x| x != 0).unwrap_or_default();
@@ -69,6 +72,8 @@ fn meets_msrv_is_some_and(opt: Option<u32>, res: Result<u32, ()>) {
6972

7073
#[clippy::msrv = "1.81"]
7174
fn under_msrv_is_none_or(opt: Option<u32>, res: Result<u32, ()>) {
75+
let _ = res.map(|x| x != 0) == Ok(true);
76+
//~^ manual_is_variant_and
7277
let _ = res.into_iter().any(|x| x != 0);
7378
//~^ manual_is_variant_and
7479
let _ = opt.map(|x| x != 0).unwrap_or_default();
@@ -80,6 +85,8 @@ fn under_msrv_is_none_or(opt: Option<u32>, res: Result<u32, ()>) {
8085

8186
#[clippy::msrv = "1.82"]
8287
fn meets_msrv_is_none_or(opt: Option<u32>, res: Result<u32, ()>) {
88+
let _ = res.map(|x| x != 0) == Ok(true);
89+
//~^ manual_is_variant_and
8390
let _ = res.into_iter().any(|x| x != 0);
8491
//~^ manual_is_variant_and
8592
let _ = opt.map(|x| x != 0).unwrap_or_default();

0 commit comments

Comments
 (0)