Rollup merge of #101388 - compiler-errors:issue-101376, r=fee1-dead
Don't delay invalid LHS bug unless it will be covered by an error in `check_overloaded_binop` Fixes #101376
This commit is contained in:
commit
dd35e2f79b
3 changed files with 57 additions and 3 deletions
|
@ -57,9 +57,28 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
)
|
||||
.is_ok()
|
||||
{
|
||||
// Suppress this error, since we already emitted
|
||||
// a deref suggestion in check_overloaded_binop
|
||||
err.downgrade_to_delayed_bug();
|
||||
// If LHS += RHS is an error, but *LHS += RHS is successful, then we will have
|
||||
// emitted a better suggestion during error handling in check_overloaded_binop.
|
||||
if self
|
||||
.lookup_op_method(
|
||||
lhs_ty,
|
||||
Some(rhs_ty),
|
||||
Some(rhs),
|
||||
Op::Binary(op, IsAssign::Yes),
|
||||
expected,
|
||||
)
|
||||
.is_err()
|
||||
{
|
||||
err.downgrade_to_delayed_bug();
|
||||
} else {
|
||||
// Otherwise, it's valid to suggest dereferencing the LHS here.
|
||||
err.span_suggestion_verbose(
|
||||
lhs.span.shrink_to_lo(),
|
||||
"consider dereferencing the left-hand side of this operation",
|
||||
"*",
|
||||
Applicability::MaybeIncorrect,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue