about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2018-09-08 02:51:20 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2018-09-08 14:15:11 +0300
commit2dce3779bbc0353ff9fb544774417a851027fcab (patch)
treeb1947e6ce697bd9b82be8a030d08f745e74375f7
parent9beb5c3ef3062226783529f626fb8c4a7eb7f936 (diff)
resolve: More precise spans for ambiguous resolution errors
Add labels to ambiguous resolution errors
-rw-r--r--src/librustc_resolve/lib.rs32
-rw-r--r--src/librustc_resolve/macros.rs10
-rw-r--r--src/librustc_resolve/resolve_imports.rs8
-rw-r--r--src/test/ui/error-codes/E0659.stderr4
-rw-r--r--src/test/ui/imports/duplicate.stderr14
-rw-r--r--src/test/ui/imports/glob-shadowing.stderr6
-rw-r--r--src/test/ui/imports/issue-53269.stderr2
-rw-r--r--src/test/ui/imports/local-modularized-tricky-fail-1.rs1
-rw-r--r--src/test/ui/imports/local-modularized-tricky-fail-1.stderr15
-rw-r--r--src/test/ui/imports/macro-paths.stderr4
-rw-r--r--src/test/ui/imports/macros.stderr6
-rw-r--r--src/test/ui/imports/rfc-1560-warning-cycle.stderr2
-rw-r--r--src/test/ui/imports/shadow_builtin_macros.stderr8
-rw-r--r--src/test/ui/macros/macro-path-prelude-shadowing.stderr2
-rw-r--r--src/test/ui/macros/macro-shadowing.stderr2
-rw-r--r--src/test/ui/macros/restricted-shadowing-legacy.stderr16
-rw-r--r--src/test/ui/macros/restricted-shadowing-modern.stderr30
-rw-r--r--src/test/ui/out-of-order-shadowing.stderr2
18 files changed, 69 insertions, 95 deletions
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs
index 6c9a924081a..b57a8a4d271 100644
--- a/src/librustc_resolve/lib.rs
+++ b/src/librustc_resolve/lib.rs
@@ -1164,8 +1164,7 @@ struct UseError<'a> {
 }
 
 struct AmbiguityError<'a> {
-    span: Span,
-    name: Name,
+    ident: Ident,
     b1: &'a NameBinding<'a>,
     b2: &'a NameBinding<'a>,
 }
@@ -1818,7 +1817,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
         self.arenas.alloc_module(module)
     }
 
-    fn record_use(&mut self, ident: Ident, ns: Namespace, binding: &'a NameBinding<'a>, span: Span)
+    fn record_use(&mut self, ident: Ident, ns: Namespace, binding: &'a NameBinding<'a>)
                   -> bool /* true if an error was reported */ {
         match binding.kind {
             NameBindingKind::Import { directive, binding, ref used }
@@ -1827,13 +1826,11 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
                 directive.used.set(true);
                 self.used_imports.insert((directive.id, ns));
                 self.add_to_glob_map(directive.id, ident);
-                self.record_use(ident, ns, binding, span)
+                self.record_use(ident, ns, binding)
             }
             NameBindingKind::Import { .. } => false,
             NameBindingKind::Ambiguity { b1, b2 } => {
-                self.ambiguity_errors.push(AmbiguityError {
-                    span, name: ident.name, b1, b2,
-                });
+                self.ambiguity_errors.push(AmbiguityError { ident, b1, b2 });
                 true
             }
             _ => false
@@ -2853,7 +2850,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
                             Def::Const(..) if is_syntactic_ambiguity => {
                                 // Disambiguate in favor of a unit struct/variant
                                 // or constant pattern.
-                                self.record_use(ident, ValueNS, binding.unwrap(), ident.span);
+                                self.record_use(ident, ValueNS, binding.unwrap());
                                 Some(PathResolution::new(def))
                             }
                             Def::StructCtor(..) | Def::VariantCtor(..) |
@@ -4532,12 +4529,12 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
         vis.is_accessible_from(module.normal_ancestor_id, self)
     }
 
-    fn report_ambiguity_error(&self, name: Name, span: Span, b1: &NameBinding, b2: &NameBinding) {
+    fn report_ambiguity_error(&self, ident: Ident, b1: &NameBinding, b2: &NameBinding) {
         let participle = |is_import: bool| if is_import { "imported" } else { "defined" };
         let msg1 =
-            format!("`{}` could refer to the name {} here", name, participle(b1.is_import()));
+            format!("`{}` could refer to the name {} here", ident, participle(b1.is_import()));
         let msg2 =
-            format!("`{}` could also refer to the name {} here", name, participle(b2.is_import()));
+            format!("`{}` could also refer to the name {} here", ident, participle(b2.is_import()));
         let note = if b1.expansion != Mark::root() {
             Some(if let Def::Macro(..) = b1.def() {
                 format!("macro-expanded {} do not shadow",
@@ -4547,16 +4544,17 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
                         if b1.is_import() { "imports" } else { "items" })
             })
         } else if b1.is_glob_import() {
-            Some(format!("consider adding an explicit import of `{}` to disambiguate", name))
+            Some(format!("consider adding an explicit import of `{}` to disambiguate", ident))
         } else {
             None
         };
 
-        let mut err = struct_span_err!(self.session, span, E0659, "`{}` is ambiguous", name);
+        let mut err = struct_span_err!(self.session, ident.span, E0659, "`{}` is ambiguous", ident);
+        err.span_label(ident.span, "ambiguous name");
         err.span_note(b1.span, &msg1);
         match b2.def() {
             Def::Macro(..) if b2.span.is_dummy() =>
-                err.note(&format!("`{}` is also a builtin macro", name)),
+                err.note(&format!("`{}` is also a builtin macro", ident)),
             _ => err.span_note(b2.span, &msg2),
         };
         if let Some(note) = note {
@@ -4581,9 +4579,9 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
             );
         }
 
-        for &AmbiguityError { span, name, b1, b2 } in &self.ambiguity_errors {
-            if reported_spans.insert(span) {
-                self.report_ambiguity_error(name, span, b1, b2);
+        for &AmbiguityError { ident, b1, b2 } in &self.ambiguity_errors {
+            if reported_spans.insert(ident.span) {
+                self.report_ambiguity_error(ident, b1, b2);
             }
         }
 
diff --git a/src/librustc_resolve/macros.rs b/src/librustc_resolve/macros.rs
index 0359d62104c..96c2e0a6ba7 100644
--- a/src/librustc_resolve/macros.rs
+++ b/src/librustc_resolve/macros.rs
@@ -757,8 +757,7 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
                            (innermost_result.0.is_glob_import() ||
                             innermost_result.0.may_appear_after(invoc_id, result.0)) {
                             self.ambiguity_errors.push(AmbiguityError {
-                                span: path_span,
-                                name: ident.name,
+                                ident,
                                 b1: innermost_result.0,
                                 b2: result.0,
                             });
@@ -850,8 +849,7 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
                         if result.def() != innermost_result.def() &&
                            innermost_result.may_appear_after(invoc_id, result) {
                             self.ambiguity_errors.push(AmbiguityError {
-                                span: ident.span,
-                                name: ident.name,
+                                ident,
                                 b1: innermost_result,
                                 b2: result,
                             });
@@ -929,7 +927,7 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
                 (Some(legacy_binding), Ok((binding, FromPrelude(from_prelude))))
                         if !from_prelude || legacy_binding.may_appear_after(invoc_id, binding) => {
                     if legacy_binding.def_ignoring_ambiguity() != binding.def_ignoring_ambiguity() {
-                        self.report_ambiguity_error(ident.name, span, legacy_binding, binding);
+                        self.report_ambiguity_error(ident, legacy_binding, binding);
                     }
                 },
                 // OK, non-macro-expanded legacy wins over prelude even if defs are different
@@ -942,7 +940,7 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
                 (None, Ok((binding, FromPrelude(from_prelude)))) => {
                     check_consistency(self, binding.def_ignoring_ambiguity());
                     if from_prelude {
-                        self.record_use(ident, MacroNS, binding, span);
+                        self.record_use(ident, MacroNS, binding);
                         self.err_if_macro_use_proc_macro(ident.name, span, binding);
                     }
                 }
diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs
index 9d2e51069c7..ef7b5c58fdd 100644
--- a/src/librustc_resolve/resolve_imports.rs
+++ b/src/librustc_resolve/resolve_imports.rs
@@ -242,21 +242,19 @@ impl<'a, 'crateloader> Resolver<'a, 'crateloader> {
         if record_used {
             if let Some(binding) = resolution.binding {
                 if let Some(shadowed_glob) = resolution.shadowed_glob {
-                    let name = ident.name;
                     // Forbid expanded shadowing to avoid time travel.
                     if restricted_shadowing &&
                        binding.expansion != Mark::root() &&
                        ns != MacroNS && // In MacroNS, `try_define` always forbids this shadowing
                        binding.def() != shadowed_glob.def() {
                         self.ambiguity_errors.push(AmbiguityError {
-                            span: path_span,
-                            name,
+                            ident,
                             b1: binding,
                             b2: shadowed_glob,
                         });
                     }
                 }
-                if self.record_use(ident, ns, binding, path_span) {
+                if self.record_use(ident, ns, binding) {
                     return Ok(self.dummy_binding);
                 }
                 if !self.is_accessible(binding.vis) {
@@ -936,7 +934,7 @@ impl<'a, 'b:'a, 'c: 'b> ImportResolver<'a, 'b, 'c> {
         self.per_ns(|this, ns| if !type_ns_only || ns == TypeNS {
             if let Ok(binding) = result[ns].get() {
                 all_ns_err = false;
-                if this.record_use(ident, ns, binding, directive.span) {
+                if this.record_use(ident, ns, binding) {
                     if let ModuleOrUniformRoot::Module(module) = module {
                         this.resolution(module, ident, ns).borrow_mut().binding =
                             Some(this.dummy_binding);
diff --git a/src/test/ui/error-codes/E0659.stderr b/src/test/ui/error-codes/E0659.stderr
index 06176085b38..f168b7797ca 100644
--- a/src/test/ui/error-codes/E0659.stderr
+++ b/src/test/ui/error-codes/E0659.stderr
@@ -1,8 +1,8 @@
 error[E0659]: `foo` is ambiguous
-  --> $DIR/E0659.rs:25:5
+  --> $DIR/E0659.rs:25:15
    |
 LL |     collider::foo(); //~ ERROR E0659
-   |     ^^^^^^^^^^^^^
+   |               ^^^ ambiguous name
    |
 note: `foo` could refer to the name imported here
   --> $DIR/E0659.rs:20:13
diff --git a/src/test/ui/imports/duplicate.stderr b/src/test/ui/imports/duplicate.stderr
index 452e3e1e200..9cdd7aa88f1 100644
--- a/src/test/ui/imports/duplicate.stderr
+++ b/src/test/ui/imports/duplicate.stderr
@@ -13,10 +13,10 @@ LL |     use a::foo as other_foo; //~ ERROR the name `foo` is defined multiple t
    |         ^^^^^^^^^^^^^^^^^^^
 
 error[E0659]: `foo` is ambiguous
-  --> $DIR/duplicate.rs:56:9
+  --> $DIR/duplicate.rs:56:15
    |
 LL |     use self::foo::bar; //~ ERROR `foo` is ambiguous
-   |         ^^^^^^^^^^^^^^
+   |               ^^^ ambiguous name
    |
 note: `foo` could refer to the name imported here
   --> $DIR/duplicate.rs:53:9
@@ -31,10 +31,10 @@ LL |     use self::m2::*;
    = note: consider adding an explicit import of `foo` to disambiguate
 
 error[E0659]: `foo` is ambiguous
-  --> $DIR/duplicate.rs:45:5
+  --> $DIR/duplicate.rs:45:8
    |
 LL |     f::foo(); //~ ERROR `foo` is ambiguous
-   |     ^^^^^^
+   |        ^^^ ambiguous name
    |
 note: `foo` could refer to the name imported here
   --> $DIR/duplicate.rs:34:13
@@ -49,10 +49,10 @@ LL |     pub use b::*;
    = note: consider adding an explicit import of `foo` to disambiguate
 
 error[E0659]: `foo` is ambiguous
-  --> $DIR/duplicate.rs:46:5
+  --> $DIR/duplicate.rs:46:8
    |
 LL |     g::foo(); //~ ERROR `foo` is ambiguous
-   |     ^^^^^^
+   |        ^^^ ambiguous name
    |
 note: `foo` could refer to the name imported here
   --> $DIR/duplicate.rs:39:13
@@ -70,7 +70,7 @@ error[E0659]: `foo` is ambiguous
   --> $DIR/duplicate.rs:59:9
    |
 LL |         foo::bar(); //~ ERROR `foo` is ambiguous
-   |         ^^^^^^^^
+   |         ^^^ ambiguous name
    |
 note: `foo` could refer to the name imported here
   --> $DIR/duplicate.rs:53:9
diff --git a/src/test/ui/imports/glob-shadowing.stderr b/src/test/ui/imports/glob-shadowing.stderr
index 7f61cd6c76d..33a2963fa29 100644
--- a/src/test/ui/imports/glob-shadowing.stderr
+++ b/src/test/ui/imports/glob-shadowing.stderr
@@ -2,7 +2,7 @@ error[E0659]: `env` is ambiguous
   --> $DIR/glob-shadowing.rs:21:17
    |
 LL |         let x = env!("PATH"); //~ ERROR `env` is ambiguous
-   |                 ^^^
+   |                 ^^^ ambiguous name
    |
 note: `env` could refer to the name imported here
   --> $DIR/glob-shadowing.rs:19:9
@@ -16,7 +16,7 @@ error[E0659]: `env` is ambiguous
   --> $DIR/glob-shadowing.rs:29:21
    |
 LL |             let x = env!("PATH"); //~ ERROR `env` is ambiguous
-   |                     ^^^
+   |                     ^^^ ambiguous name
    |
 note: `env` could refer to the name imported here
   --> $DIR/glob-shadowing.rs:27:13
@@ -30,7 +30,7 @@ error[E0659]: `fenv` is ambiguous
   --> $DIR/glob-shadowing.rs:39:21
    |
 LL |             let x = fenv!(); //~ ERROR `fenv` is ambiguous
-   |                     ^^^^
+   |                     ^^^^ ambiguous name
    |
 note: `fenv` could refer to the name imported here
   --> $DIR/glob-shadowing.rs:37:13
diff --git a/src/test/ui/imports/issue-53269.stderr b/src/test/ui/imports/issue-53269.stderr
index 0036d71107a..e125983151d 100644
--- a/src/test/ui/imports/issue-53269.stderr
+++ b/src/test/ui/imports/issue-53269.stderr
@@ -8,7 +8,7 @@ error[E0659]: `mac` is ambiguous
   --> $DIR/issue-53269.rs:18:5
    |
 LL |     mac!(); //~ ERROR `mac` is ambiguous
-   |     ^^^
+   |     ^^^ ambiguous name
    |
 note: `mac` could refer to the name defined here
   --> $DIR/issue-53269.rs:13:1
diff --git a/src/test/ui/imports/local-modularized-tricky-fail-1.rs b/src/test/ui/imports/local-modularized-tricky-fail-1.rs
index 445344732f7..fb05b95a96d 100644
--- a/src/test/ui/imports/local-modularized-tricky-fail-1.rs
+++ b/src/test/ui/imports/local-modularized-tricky-fail-1.rs
@@ -43,7 +43,6 @@ mod inner2 {
 
 fn main() {
     panic!(); //~ ERROR `panic` is ambiguous
-              //~^ ERROR `panic` is ambiguous
 }
 
 mod inner3 {
diff --git a/src/test/ui/imports/local-modularized-tricky-fail-1.stderr b/src/test/ui/imports/local-modularized-tricky-fail-1.stderr
index e9a81e7ae4c..cce1fd30f1d 100644
--- a/src/test/ui/imports/local-modularized-tricky-fail-1.stderr
+++ b/src/test/ui/imports/local-modularized-tricky-fail-1.stderr
@@ -2,7 +2,7 @@ error[E0659]: `exported` is ambiguous
   --> $DIR/local-modularized-tricky-fail-1.rs:38:1
    |
 LL | exported!(); //~ ERROR `exported` is ambiguous
-   | ^^^^^^^^
+   | ^^^^^^^^ ambiguous name
    |
 note: `exported` could refer to the name defined here
   --> $DIR/local-modularized-tricky-fail-1.rs:15:5
@@ -22,10 +22,10 @@ LL | use inner1::*;
    = note: macro-expanded macros do not shadow
 
 error[E0659]: `include` is ambiguous
-  --> $DIR/local-modularized-tricky-fail-1.rs:57:1
+  --> $DIR/local-modularized-tricky-fail-1.rs:56:1
    |
 LL | include!(); //~ ERROR `include` is ambiguous
-   | ^^^^^^^
+   | ^^^^^^^ ambiguous name
    |
 note: `include` could refer to the name defined here
   --> $DIR/local-modularized-tricky-fail-1.rs:27:5
@@ -44,7 +44,7 @@ error[E0659]: `panic` is ambiguous
   --> $DIR/local-modularized-tricky-fail-1.rs:45:5
    |
 LL |     panic!(); //~ ERROR `panic` is ambiguous
-   |     ^^^^^
+   |     ^^^^^ ambiguous name
    |
 note: `panic` could refer to the name defined here
   --> $DIR/local-modularized-tricky-fail-1.rs:21:5
@@ -60,10 +60,10 @@ LL |       define_panic!();
    = note: macro-expanded macros do not shadow
 
 error[E0659]: `panic` is ambiguous
-  --> $DIR/local-modularized-tricky-fail-1.rs:45:5
+  --> <panic macros>:1:13
    |
-LL |     panic!(); //~ ERROR `panic` is ambiguous
-   |     ^^^^^^^^^
+LL | (  ) => ( { panic ! ( "explicit panic" ) } ) ; ( $ msg : expr ) => (
+   |             ^^^^^ ambiguous name
    |
 note: `panic` could refer to the name defined here
   --> $DIR/local-modularized-tricky-fail-1.rs:21:5
@@ -77,7 +77,6 @@ LL |       define_panic!();
    |       ---------------- in this macro invocation
    = note: `panic` is also a builtin macro
    = note: macro-expanded macros do not shadow
-   = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
 
 error: aborting due to 4 previous errors
 
diff --git a/src/test/ui/imports/macro-paths.stderr b/src/test/ui/imports/macro-paths.stderr
index 08f45e1a575..a612c64c2f4 100644
--- a/src/test/ui/imports/macro-paths.stderr
+++ b/src/test/ui/imports/macro-paths.stderr
@@ -2,7 +2,7 @@ error[E0659]: `bar` is ambiguous
   --> $DIR/macro-paths.rs:23:5
    |
 LL |     bar::m! { //~ ERROR ambiguous
-   |     ^^^^^^
+   |     ^^^ ambiguous name
    |
 note: `bar` could refer to the name defined here
   --> $DIR/macro-paths.rs:24:9
@@ -20,7 +20,7 @@ error[E0659]: `baz` is ambiguous
   --> $DIR/macro-paths.rs:33:5
    |
 LL |     baz::m! { //~ ERROR ambiguous
-   |     ^^^^^^
+   |     ^^^ ambiguous name
    |
 note: `baz` could refer to the name defined here
   --> $DIR/macro-paths.rs:34:9
diff --git a/src/test/ui/imports/macros.stderr b/src/test/ui/imports/macros.stderr
index 2c0c4642067..c54101fc6e6 100644
--- a/src/test/ui/imports/macros.stderr
+++ b/src/test/ui/imports/macros.stderr
@@ -2,7 +2,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/macros.rs:48:5
    |
 LL |     m!(); //~ ERROR ambiguous
-   |     ^
+   |     ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/macros.rs:46:5
@@ -19,7 +19,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/macros.rs:26:5
    |
 LL |     m! { //~ ERROR ambiguous
-   |     ^
+   |     ^ ambiguous name
    |
 note: `m` could refer to the name imported here
   --> $DIR/macros.rs:27:13
@@ -37,7 +37,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/macros.rs:39:9
    |
 LL |         m! { //~ ERROR ambiguous
-   |         ^
+   |         ^ ambiguous name
    |
 note: `m` could refer to the name imported here
   --> $DIR/macros.rs:40:17
diff --git a/src/test/ui/imports/rfc-1560-warning-cycle.stderr b/src/test/ui/imports/rfc-1560-warning-cycle.stderr
index 5a01680fc19..91af3a4b6ac 100644
--- a/src/test/ui/imports/rfc-1560-warning-cycle.stderr
+++ b/src/test/ui/imports/rfc-1560-warning-cycle.stderr
@@ -2,7 +2,7 @@ error[E0659]: `Foo` is ambiguous
   --> $DIR/rfc-1560-warning-cycle.rs:19:17
    |
 LL |         fn f(_: Foo) {} //~ ERROR `Foo` is ambiguous
-   |                 ^^^
+   |                 ^^^ ambiguous name
    |
 note: `Foo` could refer to the name imported here
   --> $DIR/rfc-1560-warning-cycle.rs:17:13
diff --git a/src/test/ui/imports/shadow_builtin_macros.stderr b/src/test/ui/imports/shadow_builtin_macros.stderr
index 5c7f15b6fe2..e554bbb4f31 100644
--- a/src/test/ui/imports/shadow_builtin_macros.stderr
+++ b/src/test/ui/imports/shadow_builtin_macros.stderr
@@ -2,7 +2,7 @@ error[E0659]: `panic` is ambiguous
   --> $DIR/shadow_builtin_macros.rs:43:5
    |
 LL |     panic!(); //~ ERROR `panic` is ambiguous
-   |     ^^^^^
+   |     ^^^^^ ambiguous name
    |
 note: `panic` could refer to the name defined here
   --> $DIR/shadow_builtin_macros.rs:40:9
@@ -19,7 +19,7 @@ error[E0659]: `panic` is ambiguous
   --> $DIR/shadow_builtin_macros.rs:25:14
    |
 LL |     fn f() { panic!(); } //~ ERROR ambiguous
-   |              ^^^^^
+   |              ^^^^^ ambiguous name
    |
 note: `panic` could refer to the name imported here
   --> $DIR/shadow_builtin_macros.rs:24:9
@@ -33,7 +33,7 @@ error[E0659]: `panic` is ambiguous
   --> $DIR/shadow_builtin_macros.rs:30:14
    |
 LL |     fn f() { panic!(); } //~ ERROR ambiguous
-   |              ^^^^^
+   |              ^^^^^ ambiguous name
    |
 note: `panic` could refer to the name imported here
   --> $DIR/shadow_builtin_macros.rs:29:26
@@ -47,7 +47,7 @@ error[E0659]: `n` is ambiguous
   --> $DIR/shadow_builtin_macros.rs:59:5
    |
 LL |     n!(); //~ ERROR ambiguous
-   |     ^
+   |     ^ ambiguous name
    |
 note: `n` could refer to the name imported here
   --> $DIR/shadow_builtin_macros.rs:58:9
diff --git a/src/test/ui/macros/macro-path-prelude-shadowing.stderr b/src/test/ui/macros/macro-path-prelude-shadowing.stderr
index c0892f97376..607d3e100aa 100644
--- a/src/test/ui/macros/macro-path-prelude-shadowing.stderr
+++ b/src/test/ui/macros/macro-path-prelude-shadowing.stderr
@@ -2,7 +2,7 @@ error[E0659]: `std` is ambiguous
   --> $DIR/macro-path-prelude-shadowing.rs:39:9
    |
 LL |         std::panic!(); //~ ERROR `std` is ambiguous
-   |         ^^^^^^^^^^
+   |         ^^^ ambiguous name
    |
 note: `std` could refer to the name imported here
   --> $DIR/macro-path-prelude-shadowing.rs:37:9
diff --git a/src/test/ui/macros/macro-shadowing.stderr b/src/test/ui/macros/macro-shadowing.stderr
index 04f4abc4013..d996f3a7041 100644
--- a/src/test/ui/macros/macro-shadowing.stderr
+++ b/src/test/ui/macros/macro-shadowing.stderr
@@ -13,7 +13,7 @@ error[E0659]: `foo` is ambiguous
   --> $DIR/macro-shadowing.rs:27:1
    |
 LL | foo!(); //~ ERROR `foo` is ambiguous
-   | ^^^
+   | ^^^ ambiguous name
    |
 note: `foo` could refer to the name defined here
   --> $DIR/macro-shadowing.rs:20:5
diff --git a/src/test/ui/macros/restricted-shadowing-legacy.stderr b/src/test/ui/macros/restricted-shadowing-legacy.stderr
index c1a01956998..9e0d40c44b6 100644
--- a/src/test/ui/macros/restricted-shadowing-legacy.stderr
+++ b/src/test/ui/macros/restricted-shadowing-legacy.stderr
@@ -2,7 +2,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/restricted-shadowing-legacy.rs:101:13
    |
 LL |             m!(); //~ ERROR `m` is ambiguous
-   |             ^
+   |             ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/restricted-shadowing-legacy.rs:88:9
@@ -26,7 +26,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/restricted-shadowing-legacy.rs:139:42
    |
 LL |         macro_rules! gen_invoc { () => { m!() } } //~ ERROR `m` is ambiguous
-   |                                          ^
+   |                                          ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/restricted-shadowing-legacy.rs:88:9
@@ -50,7 +50,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/restricted-shadowing-legacy.rs:148:9
    |
 LL |         m!(); //~ ERROR `m` is ambiguous
-   |         ^
+   |         ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/restricted-shadowing-legacy.rs:88:9
@@ -74,7 +74,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/restricted-shadowing-legacy.rs:164:9
    |
 LL |         m!(); //~ ERROR `m` is ambiguous
-   |         ^
+   |         ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/restricted-shadowing-legacy.rs:88:9
@@ -98,7 +98,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/restricted-shadowing-legacy.rs:180:13
    |
 LL |             m!(); //~ ERROR `m` is ambiguous
-   |             ^
+   |             ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/restricted-shadowing-legacy.rs:88:9
@@ -122,7 +122,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/restricted-shadowing-legacy.rs:218:42
    |
 LL |         macro_rules! gen_invoc { () => { m!() } } //~ ERROR `m` is ambiguous
-   |                                          ^
+   |                                          ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/restricted-shadowing-legacy.rs:88:9
@@ -146,7 +146,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/restricted-shadowing-legacy.rs:232:9
    |
 LL |         m!(); //~ ERROR `m` is ambiguous
-   |         ^
+   |         ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/restricted-shadowing-legacy.rs:88:9
@@ -170,7 +170,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/restricted-shadowing-legacy.rs:262:42
    |
 LL |         macro_rules! gen_invoc { () => { m!() } } //~ ERROR `m` is ambiguous
-   |                                          ^
+   |                                          ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/restricted-shadowing-legacy.rs:88:9
diff --git a/src/test/ui/macros/restricted-shadowing-modern.stderr b/src/test/ui/macros/restricted-shadowing-modern.stderr
index af4a93a4079..0462438be78 100644
--- a/src/test/ui/macros/restricted-shadowing-modern.stderr
+++ b/src/test/ui/macros/restricted-shadowing-modern.stderr
@@ -2,10 +2,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/restricted-shadowing-modern.rs:106:17
    |
 LL |                 m!(); //~ ERROR `m` is ambiguous
-   |                 ^
-...
-LL | include!();
-   | ----------- in this macro invocation
+   |                 ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/restricted-shadowing-modern.rs:91:9
@@ -29,10 +26,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/restricted-shadowing-modern.rs:149:33
    |
 LL |             macro gen_invoc() { m!() } //~ ERROR `m` is ambiguous
-   |                                 ^
-...
-LL | include!();
-   | ----------- in this macro invocation
+   |                                 ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/restricted-shadowing-modern.rs:91:9
@@ -56,10 +50,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/restricted-shadowing-modern.rs:158:13
    |
 LL |             m!(); //~ ERROR `m` is ambiguous
-   |             ^
-...
-LL | include!();
-   | ----------- in this macro invocation
+   |             ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/restricted-shadowing-modern.rs:91:9
@@ -83,10 +74,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/restricted-shadowing-modern.rs:174:13
    |
 LL |             m!(); //~ ERROR `m` is ambiguous
-   |             ^
-...
-LL | include!();
-   | ----------- in this macro invocation
+   |             ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/restricted-shadowing-modern.rs:91:9
@@ -110,10 +98,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/restricted-shadowing-modern.rs:192:17
    |
 LL |                 m!(); //~ ERROR `m` is ambiguous
-   |                 ^
-...
-LL | include!();
-   | ----------- in this macro invocation
+   |                 ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/restricted-shadowing-modern.rs:91:9
@@ -137,10 +122,7 @@ error[E0659]: `m` is ambiguous
   --> $DIR/restricted-shadowing-modern.rs:235:33
    |
 LL |             macro gen_invoc() { m!() } //~ ERROR `m` is ambiguous
-   |                                 ^
-...
-LL | include!();
-   | ----------- in this macro invocation
+   |                                 ^ ambiguous name
    |
 note: `m` could refer to the name defined here
   --> $DIR/restricted-shadowing-modern.rs:91:9
diff --git a/src/test/ui/out-of-order-shadowing.stderr b/src/test/ui/out-of-order-shadowing.stderr
index 424c194d8fc..d96a802cb3f 100644
--- a/src/test/ui/out-of-order-shadowing.stderr
+++ b/src/test/ui/out-of-order-shadowing.stderr
@@ -2,7 +2,7 @@ error[E0659]: `bar` is ambiguous
   --> $DIR/out-of-order-shadowing.rs:15:1
    |
 LL | bar!(); //~ ERROR `bar` is ambiguous
-   | ^^^
+   | ^^^ ambiguous name
    |
 note: `bar` could refer to the name defined here
   --> $DIR/out-of-order-shadowing.rs:14:1