summary refs log tree commit diff
path: root/src/libsyntax_ext
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2018-05-10 09:09:58 -0700
committerEsteban Küber <esteban@kuber.com.ar>2018-05-10 09:09:58 -0700
commit3f6b3bbace466f4be1311192f335c4c7792a83d2 (patch)
treeafb5e7725fb3e258c87d9622fbfd4998407ecb0d /src/libsyntax_ext
parente5f80f2a4f016bf724a1cfb580619d71c8fd39ec (diff)
downloadrust-3f6b3bbace466f4be1311192f335c4c7792a83d2.tar.gz
rust-3f6b3bbace466f4be1311192f335c4c7792a83d2.zip
Improve format string errors
 - Point at format string position inside the formatting string
 - Explain that argument names can't start with an underscore
Diffstat (limited to 'src/libsyntax_ext')
-rw-r--r--src/libsyntax_ext/format.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libsyntax_ext/format.rs b/src/libsyntax_ext/format.rs
index 6b155b6596d..de20cc910d3 100644
--- a/src/libsyntax_ext/format.rs
+++ b/src/libsyntax_ext/format.rs
@@ -767,9 +767,12 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt,
     }
 
     if !parser.errors.is_empty() {
-        let (err, note) = parser.errors.remove(0);
-        let mut e = cx.ecx.struct_span_err(cx.fmtsp, &format!("invalid format string: {}", err));
-        if let Some(note) = note {
+        let err = parser.errors.remove(0);
+        let sp = cx.fmtsp.from_inner_byte_pos(err.start, err.end);
+        let mut e = cx.ecx.struct_span_err(sp, &format!("invalid format string: {}",
+                                                        err.description));
+        e.span_label(sp, err.label + " in format string");
+        if let Some(note) = err.note {
             e.note(&note);
         }
         e.emit();