about summary refs log tree commit diff
path: root/src/libsyntax_ext
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2016-11-10 12:48:55 -0800
committerEsteban Küber <esteban@kuber.com.ar>2016-11-11 10:53:02 -0800
commit3c17abc4d955080baa410e9b697bf5be37b0d079 (patch)
tree531680cea42538c21e727d5ea930d850343862e6 /src/libsyntax_ext
parentda2ce2276873242a101f205537e7ce297d68f8dd (diff)
downloadrust-3c17abc4d955080baa410e9b697bf5be37b0d079.tar.gz
rust-3c17abc4d955080baa410e9b697bf5be37b0d079.zip
On fmt string with unescaped `{` note how to escape
On cases of malformed format strings where a `{` hasn't been properly
escaped, like `println!("{");`, present a note explaining how to escape
the `{` char.
Diffstat (limited to 'src/libsyntax_ext')
-rw-r--r--src/libsyntax_ext/format.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libsyntax_ext/format.rs b/src/libsyntax_ext/format.rs
index de78f859f0f..16c1ab79576 100644
--- a/src/libsyntax_ext/format.rs
+++ b/src/libsyntax_ext/format.rs
@@ -756,8 +756,12 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt,
     }
 
     if !parser.errors.is_empty() {
-        cx.ecx.span_err(cx.fmtsp,
-                        &format!("invalid format string: {}", parser.errors.remove(0)));
+        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 {
+            e.note(&note);
+        }
+        e.emit();
         return DummyResult::raw_expr(sp);
     }
     if !cx.literal.is_empty() {