about summary refs log tree commit diff
path: root/clippy_lints/src/operators/self_assignment.rs
blob: 7c9d5320a3a8b0e30f5706fd39447d33c026e40a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use clippy_utils::diagnostics::span_lint;
use clippy_utils::eq_expr_value;
use clippy_utils::source::snippet;
use rustc_hir::Expr;
use rustc_lint::LateContext;

use super::SELF_ASSIGNMENT;

pub(super) fn check<'tcx>(cx: &LateContext<'tcx>, e: &'tcx Expr<'_>, lhs: &'tcx Expr<'_>, rhs: &'tcx Expr<'_>) {
    if eq_expr_value(cx, lhs, rhs) {
        let lhs = snippet(cx, lhs.span, "<lhs>");
        let rhs = snippet(cx, rhs.span, "<rhs>");
        span_lint(
            cx,
            SELF_ASSIGNMENT,
            e.span,
            &format!("self-assignment of `{rhs}` to `{lhs}`"),
        );
    }
}