1
Fork 0

Remove unnecessary argument from suggest_cloning

This commit is contained in:
Esteban Küber 2024-03-13 06:10:12 +00:00
parent 01b810e052
commit 259348cf7e
2 changed files with 9 additions and 21 deletions

View file

@ -476,7 +476,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
} else if self.suggest_hoisting_call_outside_loop(err, expr) { } else if self.suggest_hoisting_call_outside_loop(err, expr) {
// The place where the the type moves would be misleading to suggest clone. // The place where the the type moves would be misleading to suggest clone.
// #121466 // #121466
self.suggest_cloning(err, ty, expr, move_span); self.suggest_cloning(err, ty, expr);
} }
} }
if let Some(pat) = finder.pat { if let Some(pat) = finder.pat {
@ -987,20 +987,14 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
can_suggest_clone can_suggest_clone
} }
pub(crate) fn suggest_cloning( pub(crate) fn suggest_cloning(&self, err: &mut Diag<'_>, ty: Ty<'tcx>, expr: &hir::Expr<'_>) {
&self,
err: &mut Diag<'_>,
ty: Ty<'tcx>,
expr: &hir::Expr<'_>,
span: Span,
) {
if let Some(clone_trait_def) = self.infcx.tcx.lang_items().clone_trait() if let Some(clone_trait_def) = self.infcx.tcx.lang_items().clone_trait()
&& self && self
.infcx .infcx
.type_implements_trait(clone_trait_def, [ty], self.param_env) .type_implements_trait(clone_trait_def, [ty], self.param_env)
.must_apply_modulo_regions() .must_apply_modulo_regions()
{ {
self.suggest_cloning_inner(err, ty, expr, span); self.suggest_cloning_inner(err, ty, expr);
} }
} }
@ -1019,13 +1013,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
} }
} }
fn suggest_cloning_inner( fn suggest_cloning_inner(&self, err: &mut Diag<'_>, ty: Ty<'tcx>, expr: &hir::Expr<'_>) {
&self,
err: &mut Diag<'_>,
ty: Ty<'tcx>,
expr: &hir::Expr<'_>,
span: Span,
) {
let tcx = self.infcx.tcx; let tcx = self.infcx.tcx;
if let Some(_) = self.clone_on_reference(expr) { if let Some(_) = self.clone_on_reference(expr) {
// Avoid redundant clone suggestion already suggested in `explain_captures`. // Avoid redundant clone suggestion already suggested in `explain_captures`.
@ -1053,7 +1041,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
// Account for `(*x)` to suggest `x.clone()`. // Account for `(*x)` to suggest `x.clone()`.
expr.span.with_lo(inner_expr.span.hi()) expr.span.with_lo(inner_expr.span.hi())
} else { } else {
span.shrink_to_hi() expr.span.shrink_to_hi()
}; };
sugg.push((span, suggestion)); sugg.push((span, suggestion));
let msg = if let ty::Adt(def, _) = ty.kind() let msg = if let ty::Adt(def, _) = ty.kind()
@ -1173,7 +1161,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
if let Some(expr) = self.find_expr(borrow_span) if let Some(expr) = self.find_expr(borrow_span)
&& let Some(ty) = typeck_results.node_type_opt(expr.hir_id) && let Some(ty) = typeck_results.node_type_opt(expr.hir_id)
{ {
self.suggest_cloning(&mut err, ty, expr, borrow_span); self.suggest_cloning(&mut err, ty, expr);
} }
self.buffer_error(err); self.buffer_error(err);
} }

View file

@ -445,7 +445,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
}; };
if let Some(expr) = self.find_expr(span) { if let Some(expr) = self.find_expr(span) {
self.suggest_cloning(err, place_ty, expr, span); self.suggest_cloning(err, place_ty, expr);
} }
err.subdiagnostic( err.subdiagnostic(
@ -480,7 +480,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
}; };
if let Some(expr) = self.find_expr(span) { if let Some(expr) = self.find_expr(span) {
self.suggest_cloning(err, place_ty, expr, span); self.suggest_cloning(err, place_ty, expr);
} }
err.subdiagnostic( err.subdiagnostic(
@ -593,7 +593,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
let place_desc = &format!("`{}`", self.local_names[*local].unwrap()); let place_desc = &format!("`{}`", self.local_names[*local].unwrap());
if let Some(expr) = self.find_expr(binding_span) { if let Some(expr) = self.find_expr(binding_span) {
self.suggest_cloning(err, bind_to.ty, expr, binding_span); self.suggest_cloning(err, bind_to.ty, expr);
} }
err.subdiagnostic( err.subdiagnostic(