.array_windows::<2>()
.enumerate()
.fold(true, |all_eq, (i, &[lhs, rhs])| {
- if eq.eq_block(lhs, rhs)
- && !contains_let(conds[i])
- && conds.get(i + 1).map_or(true, |e| !contains_let(e))
- {
+ if eq.eq_block(lhs, rhs) && !contains_let(conds[i]) && conds.get(i + 1).map_or(true, |e| !contains_let(e)) {
span_lint_and_note(
cx,
IF_SAME_THEN_ELSE,
.all(|b| get_stmt(b).map_or(false, |s| eq.eq_stmt(s, stmt)))
}
-
-
-
-
fn scan_block_for_eq(cx: &LateContext<'_>, _conds: &[&Expr<'_>], block: &Block<'_>, blocks: &[&Block<'_>]) -> BlockEq {
let mut eq = SpanlessEq::new(cx);
let mut eq = eq.inter_expr();
use crate::consts::constant_simple;
-use crate::source::snippet_opt;
use crate::macros::macro_backtrace;
+use crate::source::snippet_opt;
use rustc_ast::ast::InlineAsmTemplatePiece;
use rustc_data_structures::fx::FxHasher;
use rustc_hir::def::Res;
}
fn cannot_be_compared_block(&mut self, block: &Block<'_>) -> bool {
- if block.stmts.first().map_or(false, |stmt|
+ if block.stmts.first().map_or(false, |stmt| {
matches!(
stmt.kind,
StmtKind::Semi(semi_expr) if self.should_ignore(semi_expr)
)
- ) {
+ }) {
return true;
}
}
fn should_ignore(&mut self, expr: &Expr<'_>) -> bool {
- if macro_backtrace(expr.span).last().map_or(false, |macro_call|
+ if macro_backtrace(expr.span).last().map_or(false, |macro_call| {
matches!(
&self.cx.tcx.get_diagnostic_name(macro_call.def_id),
Some(sym::todo_macro | sym::unimplemented_macro)
)
- ) {
+ }) {
return true;
}