diff options
| author | Luqman Aden <me@luqman.ca> | 2022-08-07 04:03:28 -0700 |
|---|---|---|
| committer | Luqman Aden <me@luqman.ca> | 2022-08-07 04:03:28 -0700 |
| commit | fc83a0cb57eaad7104cc8861ba354fc76da79684 (patch) | |
| tree | 997de8fc4764164bcf3f3f4efaa874dd0c0f612e /compiler | |
| parent | e141246cbbce2a6001f3181d3d0f661bbfd9c7ea (diff) | |
| download | rust-fc83a0cb57eaad7104cc8861ba354fc76da79684.tar.gz rust-fc83a0cb57eaad7104cc8861ba354fc76da79684.zip | |
Don't ICE while suggesting updating item path.
When an item isn't found, we may suggest an appropriate import to `use`. Along with that, we also suggest updating the path to work with the `use`. Unfortunately, if the code in question originates from a macro, the span used to indicate which part of the path needs updating may not be suitable and cause an ICE. Since, such code is not adjustable directly by the user without modifying the macro, just skip the suggestion in such cases.
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_resolve/src/diagnostics.rs | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs index 8839fb1a151..325b0458638 100644 --- a/compiler/rustc_resolve/src/diagnostics.rs +++ b/compiler/rustc_resolve/src/diagnostics.rs @@ -2544,12 +2544,15 @@ fn show_candidates( Applicability::MaybeIncorrect, ); if let [first, .., last] = &path[..] { - err.span_suggestion_verbose( - first.ident.span.until(last.ident.span), - &format!("if you import `{}`, refer to it directly", last.ident), - "", - Applicability::Unspecified, - ); + let sp = first.ident.span.until(last.ident.span); + if sp.can_be_used_for_suggestions() { + err.span_suggestion_verbose( + sp, + &format!("if you import `{}`, refer to it directly", last.ident), + "", + Applicability::Unspecified, + ); + } } } else { msg.push(':'); |
