mirror of
https://github.com/rust-lang/rust.git
synced 2025-01-29 16:13:40 +00:00
use format-args-capture and remove an unnecessary nested block
This commit is contained in:
parent
c1230e137b
commit
f2506c911b
@ -299,52 +299,52 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
IsAssign::No => {
|
||||
let (message, missing_trait, use_output) = match op.node {
|
||||
hir::BinOpKind::Add => (
|
||||
format!("cannot add `{}` to `{}`", rhs_ty, lhs_ty),
|
||||
format!("cannot add `{rhs_ty}` to `{lhs_ty}`"),
|
||||
Some("std::ops::Add"),
|
||||
true,
|
||||
),
|
||||
hir::BinOpKind::Sub => (
|
||||
format!("cannot subtract `{}` from `{}`", rhs_ty, lhs_ty),
|
||||
format!("cannot subtract `{rhs_ty}` from `{lhs_ty}`"),
|
||||
Some("std::ops::Sub"),
|
||||
true,
|
||||
),
|
||||
hir::BinOpKind::Mul => (
|
||||
format!("cannot multiply `{}` by `{}`", lhs_ty, rhs_ty),
|
||||
format!("cannot multiply `{lhs_ty}` by `{rhs_ty}`"),
|
||||
Some("std::ops::Mul"),
|
||||
true,
|
||||
),
|
||||
hir::BinOpKind::Div => (
|
||||
format!("cannot divide `{}` by `{}`", lhs_ty, rhs_ty),
|
||||
format!("cannot divide `{lhs_ty}` by `{rhs_ty}`"),
|
||||
Some("std::ops::Div"),
|
||||
true,
|
||||
),
|
||||
hir::BinOpKind::Rem => (
|
||||
format!("cannot mod `{}` by `{}`", lhs_ty, rhs_ty),
|
||||
format!("cannot mod `{lhs_ty}` by `{rhs_ty}`"),
|
||||
Some("std::ops::Rem"),
|
||||
true,
|
||||
),
|
||||
hir::BinOpKind::BitAnd => (
|
||||
format!("no implementation for `{} & {}`", lhs_ty, rhs_ty),
|
||||
format!("no implementation for `{lhs_ty} & {rhs_ty}`"),
|
||||
Some("std::ops::BitAnd"),
|
||||
true,
|
||||
),
|
||||
hir::BinOpKind::BitXor => (
|
||||
format!("no implementation for `{} ^ {}`", lhs_ty, rhs_ty),
|
||||
format!("no implementation for `{lhs_ty} ^ {rhs_ty}`"),
|
||||
Some("std::ops::BitXor"),
|
||||
true,
|
||||
),
|
||||
hir::BinOpKind::BitOr => (
|
||||
format!("no implementation for `{} | {}`", lhs_ty, rhs_ty),
|
||||
format!("no implementation for `{lhs_ty} | {rhs_ty}`"),
|
||||
Some("std::ops::BitOr"),
|
||||
true,
|
||||
),
|
||||
hir::BinOpKind::Shl => (
|
||||
format!("no implementation for `{} << {}`", lhs_ty, rhs_ty),
|
||||
format!("no implementation for `{lhs_ty} << {rhs_ty}`"),
|
||||
Some("std::ops::Shl"),
|
||||
true,
|
||||
),
|
||||
hir::BinOpKind::Shr => (
|
||||
format!("no implementation for `{} >> {}`", lhs_ty, rhs_ty),
|
||||
format!("no implementation for `{lhs_ty} >> {rhs_ty}`"),
|
||||
Some("std::ops::Shr"),
|
||||
true,
|
||||
),
|
||||
@ -477,8 +477,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
// When we know that a missing bound is responsible, we don't show
|
||||
// this note as it is redundant.
|
||||
err.note(&format!(
|
||||
"the trait `{}` is not implemented for `{}`",
|
||||
missing_trait, lhs_ty
|
||||
"the trait `{missing_trait}` is not implemented for `{lhs_ty}`"
|
||||
));
|
||||
}
|
||||
} else {
|
||||
@ -679,19 +678,17 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
};
|
||||
let mut visitor = TypeParamVisitor(vec![]);
|
||||
visitor.visit_ty(operand_ty);
|
||||
if let [ty] = &visitor.0[..] {
|
||||
if let ty::Param(p) = *operand_ty.kind() {
|
||||
suggest_constraining_param(
|
||||
self.tcx,
|
||||
self.body_id,
|
||||
&mut err,
|
||||
*ty,
|
||||
operand_ty,
|
||||
missing_trait,
|
||||
p,
|
||||
true,
|
||||
);
|
||||
}
|
||||
if let [ty] = &visitor.0[..] && let ty::Param(p) = *operand_ty.kind() {
|
||||
suggest_constraining_param(
|
||||
self.tcx,
|
||||
self.body_id,
|
||||
&mut err,
|
||||
*ty,
|
||||
operand_ty,
|
||||
missing_trait,
|
||||
p,
|
||||
true,
|
||||
);
|
||||
}
|
||||
|
||||
let sp = self.tcx.sess.source_map().start_point(ex.span);
|
||||
@ -722,10 +719,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
err.span_suggestion(
|
||||
ex.span,
|
||||
&format!(
|
||||
"you may have meant the maximum value of `{}`",
|
||||
actual
|
||||
"you may have meant the maximum value of `{actual}`",
|
||||
),
|
||||
format!("{}::MAX", actual),
|
||||
format!("{actual}::MAX"),
|
||||
Applicability::MaybeIncorrect,
|
||||
);
|
||||
}
|
||||
@ -988,7 +984,7 @@ fn suggest_constraining_param(
|
||||
set_output: bool,
|
||||
) {
|
||||
let hir = tcx.hir();
|
||||
let msg = &format!("`{}` might need a bound for `{}`", lhs_ty, missing_trait);
|
||||
let msg = &format!("`{lhs_ty}` might need a bound for `{missing_trait}`");
|
||||
// Try to find the def-id and details for the parameter p. We have only the index,
|
||||
// so we have to find the enclosing function's def-id, then look through its declared
|
||||
// generic parameters to get the declaration.
|
||||
@ -1002,13 +998,13 @@ fn suggest_constraining_param(
|
||||
.as_ref()
|
||||
.and_then(|node| node.generics())
|
||||
{
|
||||
let output = if set_output { format!("<Output = {}>", rhs_ty) } else { String::new() };
|
||||
let output = if set_output { format!("<Output = {rhs_ty}>") } else { String::new() };
|
||||
suggest_constraining_type_param(
|
||||
tcx,
|
||||
generics,
|
||||
&mut err,
|
||||
&format!("{}", lhs_ty),
|
||||
&format!("{}{}", missing_trait, output),
|
||||
&lhs_ty.to_string(),
|
||||
&format!("{missing_trait}{output}"),
|
||||
None,
|
||||
);
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user