diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2015-04-18 23:29:57 +0530 |
|---|---|---|
| committer | Manish Goregaokar <manishsmail@gmail.com> | 2015-04-18 23:29:57 +0530 |
| commit | cb7a12757b9f9214c2b5f38437bf6c717f83eca5 (patch) | |
| tree | 0b00d1548a63cc00d341f6e2cfa22f00944eb743 /src/libsyntax | |
| parent | 93d8ba29066c8c81185e54a6d686d18165faa6e8 (diff) | |
| parent | 50f75f3e2a4b8cb5451acb15f8d469a222dafbf4 (diff) | |
| download | rust-cb7a12757b9f9214c2b5f38437bf6c717f83eca5.tar.gz rust-cb7a12757b9f9214c2b5f38437bf6c717f83eca5.zip | |
Rollup merge of #24542 - michaelsproul:rollup, r=alexcrichton
I did a manual merge of all the extended error PRs as we were getting merge conflicts yesterday. I think this is preferable to merging separately as I ended up having to manually merge @nham and @GuillaumeGomez's commits. Rollup of #24458, #24482 and #24488. #24482 and #24488 were already re-approved, and would need to be cancelled if this is merged instead.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/diagnostics/plugin.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/libsyntax/diagnostics/plugin.rs b/src/libsyntax/diagnostics/plugin.rs index 59fe3658437..6fcf39f0b17 100644 --- a/src/libsyntax/diagnostics/plugin.rs +++ b/src/libsyntax/diagnostics/plugin.rs @@ -20,6 +20,9 @@ use parse::token; use ptr::P; use util::small_vector::SmallVector; +// Maximum width of any line in an extended error description (inclusive). +const MAX_DESCRIPTION_WIDTH: usize = 80; + thread_local! { static REGISTERED_DIAGNOSTICS: RefCell<BTreeMap<Name, Option<Name>>> = { RefCell::new(BTreeMap::new()) @@ -92,6 +95,24 @@ pub fn expand_register_diagnostic<'cx>(ecx: &'cx mut ExtCtxt, } _ => unreachable!() }; + // Check that the description starts and ends with a newline and doesn't + // overflow the maximum line width. + description.map(|raw_msg| { + let msg = raw_msg.as_str(); + if !msg.starts_with("\n") || !msg.ends_with("\n") { + ecx.span_err(span, &format!( + "description for error code {} doesn't start and end with a newline", + token::get_ident(*code) + )); + } + if msg.lines().any(|line| line.len() > MAX_DESCRIPTION_WIDTH) { + ecx.span_err(span, &format!( + "description for error code {} contains a line longer than {} characters", + token::get_ident(*code), MAX_DESCRIPTION_WIDTH + )); + } + raw_msg + }); with_registered_diagnostics(|diagnostics| { if diagnostics.insert(code.name, description).is_some() { ecx.span_err(span, &format!( |
