Skip to content

Commit abe5b1c

Browse files
committed
Factor out can_use_if_let_chains()
1 parent af0bc98 commit abe5b1c

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

clippy_lints/src/collapsible_if.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use clippy_config::Conf;
22
use clippy_utils::diagnostics::span_lint_and_then;
3-
use clippy_utils::msrvs::{self, Msrv};
3+
use clippy_utils::msrvs::Msrv;
44
use clippy_utils::source::{IntoSpan as _, SpanRangeExt, snippet, snippet_block_with_applicability};
5-
use clippy_utils::{span_contains_non_whitespace, tokenize_with_text};
5+
use clippy_utils::{can_use_if_let_chains, span_contains_non_whitespace, tokenize_with_text};
66
use rustc_ast::BinOpKind;
77
use rustc_errors::Applicability;
88
use rustc_hir::{Block, Expr, ExprKind, StmtKind};
@@ -216,8 +216,7 @@ impl CollapsibleIf {
216216
}
217217

218218
fn eligible_condition(&self, cx: &LateContext<'_>, cond: &Expr<'_>) -> bool {
219-
!matches!(cond.kind, ExprKind::Let(..))
220-
|| (cx.tcx.sess.edition().at_least_rust_2024() && self.msrv.meets(cx, msrvs::LET_CHAINS))
219+
!matches!(cond.kind, ExprKind::Let(..)) || can_use_if_let_chains(cx, self.msrv)
221220
}
222221
}
223222

clippy_utils/src/lib.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ use visitors::{Visitable, for_each_unconsumed_temporary};
129129
use crate::ast_utils::unordered_over;
130130
use crate::consts::{ConstEvalCtxt, Constant, mir_to_const};
131131
use crate::higher::Range;
132+
use crate::msrvs::Msrv;
132133
use crate::ty::{adt_and_variant_of_res, can_partially_move_ty, expr_sig, is_copy, is_recursively_primitive_type};
133134
use crate::visitors::for_each_expr_without_closures;
134135

@@ -3659,3 +3660,8 @@ pub fn is_expr_async_block(expr: &Expr<'_>) -> bool {
36593660
})
36603661
)
36613662
}
3663+
3664+
/// Checks if the chosen edition and `msrv` allows using `if let` chains.
3665+
pub fn can_use_if_let_chains(cx: &LateContext<'_>, msrv: Msrv) -> bool {
3666+
cx.tcx.sess.edition().at_least_rust_2024() && msrv.meets(cx, msrvs::LET_CHAINS)
3667+
}

0 commit comments

Comments
 (0)