about summary refs log tree commit diff
path: root/compiler
diff options
context:
space:
mode:
authorAaron Hill <aa1ronham@gmail.com>2021-02-13 14:52:25 -0500
committerAaron Hill <aa1ronham@gmail.com>2021-05-12 19:03:06 -0400
commit0dd9f118d973bb077c6ff0e2a57421ca2eecb81c (patch)
tree02a54f3e5aceaf032fbc32486fd122f47dd40553 /compiler
parent70e52caed91a43fc01867921e67fcd3478056edd (diff)
downloadrust-0dd9f118d973bb077c6ff0e2a57421ca2eecb81c.tar.gz
rust-0dd9f118d973bb077c6ff0e2a57421ca2eecb81c.zip
Show macro name in 'this error originates in macro' message
When there are multiple macros in use, it can be difficult to tell
which one was responsible for producing an error.
Diffstat (limited to 'compiler')
-rw-r--r--compiler/rustc_errors/src/emitter.rs13
-rw-r--r--compiler/rustc_errors/src/lib.rs1
2 files changed, 7 insertions, 7 deletions
diff --git a/compiler/rustc_errors/src/emitter.rs b/compiler/rustc_errors/src/emitter.rs
index c4c15136cf8..d3f92bf3047 100644
--- a/compiler/rustc_errors/src/emitter.rs
+++ b/compiler/rustc_errors/src/emitter.rs
@@ -309,8 +309,8 @@ pub trait Emitter {
                     // are some which do actually involve macros.
                     ExpnKind::Inlined | ExpnKind::Desugaring(..) | ExpnKind::AstPass(..) => None,
 
-                    ExpnKind::Macro { kind: macro_kind, name: _, proc_macro: _ } => {
-                        Some(macro_kind)
+                    ExpnKind::Macro { kind: macro_kind, name, proc_macro: _ } => {
+                        Some((macro_kind, name))
                     }
                 }
             });
@@ -322,13 +322,12 @@ pub trait Emitter {
         self.render_multispans_macro_backtrace(span, children, backtrace);
 
         if !backtrace {
-            if let Some(macro_kind) = has_macro_spans {
+            if let Some((macro_kind, name)) = has_macro_spans {
+                let descr = macro_kind.descr();
+
                 let msg = format!(
-                    "this {} originates in {} {} \
+                    "this {level} originates in the {descr} `{name}` \
                     (in Nightly builds, run with -Z macro-backtrace for more info)",
-                    level,
-                    macro_kind.article(),
-                    macro_kind.descr(),
                 );
 
                 children.push(SubDiagnostic {
diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs
index dc1664bb2ba..f53ce7ceace 100644
--- a/compiler/rustc_errors/src/lib.rs
+++ b/compiler/rustc_errors/src/lib.rs
@@ -6,6 +6,7 @@
 #![feature(crate_visibility_modifier)]
 #![feature(backtrace)]
 #![feature(extended_key_value_attributes)]
+#![feature(format_args_capture)]
 #![feature(iter_zip)]
 #![feature(nll)]