about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2021-12-01 10:50:21 +0100
committerGitHub <noreply@github.com>2021-12-01 10:50:21 +0100
commitc09c16c0dff47b1ec143c266c3c06acdc84a4257 (patch)
treefd39fe268a98b6fc776bd12fa0f31766140295ff
parentd93df5775cbbd076bf438a4063c5c98a6293addf (diff)
parent6dfed31c4313c1eee7b1aa155e0761c5cdf7f128 (diff)
downloadrust-c09c16c0dff47b1ec143c266c3c06acdc84a4257.tar.gz
rust-c09c16c0dff47b1ec143c266c3c06acdc84a4257.zip
Rollup merge of #91298 - FabianWolff:issue-91028-source-avail, r=cjgillot
Improve error message for `E0659` if the source is not available

Fixes #91028. The fix is similar to those in #89233 and #87088. With this change, instead of the dangling
```
note: `Option` could also refer to the enum defined here
```
I get
```
note: `Option` could also refer to an enum from prelude
```
If the standard library source code _is_ available, the output does not change.
-rw-r--r--compiler/rustc_resolve/src/diagnostics.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs
index 2e4cb4ff727..6a13627a563 100644
--- a/compiler/rustc_resolve/src/diagnostics.rs
+++ b/compiler/rustc_resolve/src/diagnostics.rs
@@ -1178,7 +1178,7 @@ impl<'a> Resolver<'a> {
 
     fn binding_description(&self, b: &NameBinding<'_>, ident: Ident, from_prelude: bool) -> String {
         let res = b.res();
-        if b.span.is_dummy() {
+        if b.span.is_dummy() || self.session.source_map().span_to_snippet(b.span).is_err() {
             // These already contain the "built-in" prefix or look bad with it.
             let add_built_in =
                 !matches!(b.res(), Res::NonMacroAttr(..) | Res::PrimTy(..) | Res::ToolMod);