mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +00:00
Account for single where
bound being removed
This commit is contained in:
parent
c85bb274f6
commit
29bdf9ea51
@ -5123,8 +5123,24 @@ fn point_at_assoc_type_restriction(
|
||||
{
|
||||
// The following block is to determine the right span to delete for this bound
|
||||
// that will leave valid code after the suggestion is applied.
|
||||
let span = if let Some(hir::WherePredicate::BoundPredicate(next)) =
|
||||
predicates.peek()
|
||||
let span = if pred.origin == hir::PredicateOrigin::WhereClause
|
||||
&& generics
|
||||
.predicates
|
||||
.iter()
|
||||
.filter(|p| {
|
||||
matches!(
|
||||
p,
|
||||
hir::WherePredicate::BoundPredicate(p)
|
||||
if hir::PredicateOrigin::WhereClause == p.origin
|
||||
)
|
||||
})
|
||||
.count()
|
||||
== 1
|
||||
{
|
||||
// There's only one `where` bound, that needs to be removed. Remove the whole
|
||||
// `where` clause.
|
||||
generics.where_clause_span
|
||||
} else if let Some(hir::WherePredicate::BoundPredicate(next)) = predicates.peek()
|
||||
&& pred.origin == next.origin
|
||||
{
|
||||
// There's another bound, include the comma for the current one.
|
||||
@ -5174,7 +5190,7 @@ fn point_at_assoc_type_restriction(
|
||||
err.span_suggestion_verbose(
|
||||
path.span,
|
||||
"replace the associated type with the type specified in this `impl`",
|
||||
format!("{}", tcx.type_of(new.def_id).skip_binder(),),
|
||||
tcx.type_of(new.def_id).skip_binder().to_string(),
|
||||
Applicability::MachineApplicable,
|
||||
);
|
||||
}
|
||||
|
@ -20,8 +20,8 @@ LL | Self::A: Copy,
|
||||
| ---- unsatisfied trait bound introduced here
|
||||
help: associated type for the current `impl` cannot be restricted in `where` clauses, remove this bound
|
||||
|
|
||||
LL - where
|
||||
LL - Self::A: Copy,
|
||||
LL +
|
||||
|
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
@ -19,8 +19,7 @@ impl Grault for () {
|
||||
|
||||
impl<T: Grault> Grault for (T,)
|
||||
//~^ ERROR overflow evaluating the requirement `<(T,) as Grault>::A == _`
|
||||
where
|
||||
|
||||
|
||||
{
|
||||
type A = ();
|
||||
type B = bool;
|
||||
|
@ -20,8 +20,8 @@ LL | Self::A: Baz,
|
||||
| --- unsatisfied trait bound introduced here
|
||||
help: associated type for the current `impl` cannot be restricted in `where` clauses, remove this bound
|
||||
|
|
||||
LL - where
|
||||
LL - Self::A: Baz,
|
||||
LL +
|
||||
|
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
Loading…
Reference in New Issue
Block a user