diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2018-07-24 20:46:22 -0700 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2018-07-24 20:46:22 -0700 |
| commit | 9a893cc2b82ac6259aead1319758404b80b8a959 (patch) | |
| tree | 7e3916b0f97015e658c475060f2660ae7a8bb647 /src/libsyntax_ext | |
| parent | 7bd94e0738dfaa91fe9fc16085969a7c9c3f8129 (diff) | |
| download | rust-9a893cc2b82ac6259aead1319758404b80b8a959.tar.gz rust-9a893cc2b82ac6259aead1319758404b80b8a959.zip | |
Add span label for format str missing specifier
Diffstat (limited to 'src/libsyntax_ext')
| -rw-r--r-- | src/libsyntax_ext/format.rs | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/libsyntax_ext/format.rs b/src/libsyntax_ext/format.rs index ad05db91770..98de3d80b1e 100644 --- a/src/libsyntax_ext/format.rs +++ b/src/libsyntax_ext/format.rs @@ -915,12 +915,13 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt, errs.push((cx.args[i].span, msg)); } } - if errs.len() > 0 { - let args_used = cx.arg_types.len() - errs.len(); - let args_unused = errs.len(); + let errs_len = errs.len(); + if errs_len > 0 { + let args_used = cx.arg_types.len() - errs_len; + let args_unused = errs_len; let mut diag = { - if errs.len() == 1 { + if errs_len == 1 { let (sp, msg) = errs.into_iter().next().unwrap(); cx.ecx.struct_span_err(sp, msg) } else { @@ -933,6 +934,8 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt, } }; + // Used to ensure we only report translations for *one* kind of foreign format. + let mut found_foreign = false; // Decide if we want to look for foreign formatting directives. if args_used < args_unused { use super::format_foreign as foreign; @@ -941,9 +944,6 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt, // with `%d should be written as {}` over and over again. let mut explained = HashSet::new(); - // Used to ensure we only report translations for *one* kind of foreign format. - let mut found_foreign = false; - macro_rules! check_foreign { ($kind:ident) => {{ let mut show_doc_note = false; @@ -987,7 +987,7 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt, } if suggestions.len() > 0 { diag.multipart_suggestion( - "format specifiers in Rust are written using `{}`", + "format specifiers use curly braces", suggestions, ); } @@ -999,6 +999,9 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt, check_foreign!(shell); } } + if !found_foreign && errs_len == 1 { + diag.span_label(cx.fmtsp, "formatting specifier missing"); + } diag.emit(); } |
