diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-10-21 10:08:16 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-21 10:08:16 +0200 |
| commit | c5dd84d493019c6852337cdb3c3570b21c8b3711 (patch) | |
| tree | cdfa3860e9e07d50acec9cb4fd83f95e5690ff00 /compiler | |
| parent | ad574d9799beea4c79cec3c6ac69f5950d13ee32 (diff) | |
| parent | b0d17f35d98c5cafd43a673c70f8ab5d393c31a3 (diff) | |
| download | rust-c5dd84d493019c6852337cdb3c3570b21c8b3711.tar.gz rust-c5dd84d493019c6852337cdb3c3570b21c8b3711.zip | |
Rollup merge of #116961 - estebank:issue-60164, r=oli-obk
Typo suggestion to change bindings with leading underscore When encountering a binding that isn't found but has a typo suggestion for a binding with a leading underscore, suggest changing the binding definition instead of the use place. Fix #60164.
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_resolve/src/diagnostics.rs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs index 925ee615b09..4ad838e5aed 100644 --- a/compiler/rustc_resolve/src/diagnostics.rs +++ b/compiler/rustc_resolve/src/diagnostics.rs @@ -1511,9 +1511,22 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { ), ); } + + let (span, sugg, post) = if let SuggestionTarget::SimilarlyNamed = suggestion.target + && let Ok(snippet) = self.tcx.sess.source_map().span_to_snippet(span) + && let Some(span) = suggestion.span + && let Some(candidate) = suggestion.candidate.as_str().strip_prefix("_") + && snippet == candidate + { + // When the suggested binding change would be from `x` to `_x`, suggest changing the + // original binding definition instead. (#60164) + (span, snippet, ", consider changing it") + } else { + (span, suggestion.candidate.to_string(), "") + }; let msg = match suggestion.target { SuggestionTarget::SimilarlyNamed => format!( - "{} {} with a similar name exists", + "{} {} with a similar name exists{post}", suggestion.res.article(), suggestion.res.descr() ), @@ -1521,7 +1534,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { format!("maybe you meant this {}", suggestion.res.descr()) } }; - err.span_suggestion(span, msg, suggestion.candidate, Applicability::MaybeIncorrect); + err.span_suggestion(span, msg, sugg, Applicability::MaybeIncorrect); true } |
