Skip to content

Commit

Permalink
Account for single where bound being removed
Browse files Browse the repository at this point in the history
  • Loading branch information
estebank committed Jan 4, 2024
1 parent 48bcad6 commit be7148f
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5070,8 +5070,26 @@ 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| {
if let hir::WherePredicate::BoundPredicate(p) = p
&& hir::PredicateOrigin::WhereClause == p.origin
{
true
} else {
false
}
})
.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.
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/associated-types/impl-wf-cycle-2.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 1 addition & 2 deletions tests/ui/associated-types/impl-wf-cycle-6.fixed
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/associated-types/impl-wf-cycle-6.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit be7148f

Please sign in to comment.