Skip to content

Commit d5a4c52

Browse files
committed
something nice
1 parent 9663da3 commit d5a4c52

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

clippy_lints/src/mut_reference.rs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
1-
use clippy_utils::diagnostics::span_lint;
2-
use rustc_hir::{BorrowKind, Expr, ExprKind, Mutability};
1+
use clippy_utils::diagnostics::span_lint_and_sugg;
2+
use clippy_utils::source::snippet;
3+
use rustc_errors::Applicability;
4+
use rustc_hir::{
5+
AssocItemKind, BorrowKind, Expr, ExprKind, FieldDef, HirId, ImplItemRef, IsAuto, Item, ItemKind, Mod, Mutability,
6+
QPath, TraitItemRef, TyKind, Variant, VariantData,
7+
};
38
use rustc_lint::{LateContext, LateLintPass};
4-
use rustc_middle::ty::{self, Ty};
9+
use rustc_middle::ty::print::with_forced_trimmed_paths;
10+
use rustc_middle::ty::{self, GenericArgKind, Ty};
511
use rustc_session::declare_lint_pass;
12+
use rustc_span::symbol::sym;
613
use std::iter;
714

815
declare_clippy_lint! {
@@ -86,11 +93,16 @@ fn check_arguments<'tcx>(
8693
match parameter.kind() {
8794
ty::Ref(_, _, Mutability::Not) | ty::RawPtr(_, Mutability::Not) => {
8895
if let ExprKind::AddrOf(BorrowKind::Ref, Mutability::Mut, _) = argument.kind {
89-
span_lint(
96+
let snippet = snippet(cx, argument.span, "..");
97+
let trimmed_snippet = &snippet[5..];
98+
span_lint_and_sugg(
9099
cx,
91100
UNNECESSARY_MUT_PASSED,
92101
argument.span,
93102
format!("the {fn_kind} `{name}` doesn't need a mutable reference"),
103+
"try",
104+
format!("&{trimmed_snippet}"),
105+
Applicability::MachineApplicable,
94106
);
95107
}
96108
},

0 commit comments

Comments
 (0)