Do not emit invalid suggestion in E0191 when spans overlap
Fix #115019.
This commit is contained in:
parent
bf766cd31b
commit
b86285af16
@ -597,7 +597,21 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
|
||||
}
|
||||
}
|
||||
}
|
||||
if !suggestions.is_empty() {
|
||||
suggestions.sort_by_key(|&(span, _)| span);
|
||||
// There are cases where one bound points to a span within another bound's span, like when
|
||||
// you have code like the following (#115019), so we skip providing a suggestion in those
|
||||
// cases to avoid having a malformed suggestion.
|
||||
//
|
||||
// pub struct Flatten<I> {
|
||||
// inner: <IntoIterator<Item: IntoIterator<Item: >>::IntoIterator as Item>::core,
|
||||
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
// | ^^^^^^^^^^^^^^^^^^^^^
|
||||
// | |
|
||||
// | associated types `Item`, `IntoIter` must be specified
|
||||
// associated types `Item`, `IntoIter` must be specified
|
||||
// }
|
||||
let overlaps = suggestions.windows(2).any(|pair| pair[0].0.overlaps(pair[1].0));
|
||||
if !suggestions.is_empty() && !overlaps {
|
||||
err.multipart_suggestion(
|
||||
format!("specify the associated type{}", pluralize!(types_count)),
|
||||
suggestions,
|
||||
|
@ -6,11 +6,6 @@ LL | inner: <IntoIterator<Item: IntoIterator<Item: >>::IntoIterator as Item>
|
||||
| | |
|
||||
| | associated types `Item`, `IntoIter` must be specified
|
||||
| associated types `Item`, `IntoIter` must be specified
|
||||
|
|
||||
help: specify the associated types
|
||||
|
|
||||
LL | inner: <IntoIterator<Item: IntoIterator<Item: >, Item = Type, IntoIter = Type>IntoIterator<Item: , Item = Type, IntoIter = Type>>::IntoIterator as Item>::Core,
|
||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
error[E0223]: ambiguous associated type
|
||||
--> $DIR/overlaping-bound-suggestion.rs:7:13
|
||||
|
Loading…
x
Reference in New Issue
Block a user