diff options
| author | Michael Sproul <micsproul@gmail.com> | 2015-04-15 21:54:01 +1000 |
|---|---|---|
| committer | Michael Sproul <micsproul@gmail.com> | 2015-04-17 21:35:24 +1000 |
| commit | 6d2b6d5a19224eee279c44e8ff2bb37ba331d1df (patch) | |
| tree | 0106105e8f7bd7aadb15454bd247f205258c4899 /src | |
| parent | c54f43a5d18c89f65f22a179e8e6d05ce9c1d36c (diff) | |
| download | rust-6d2b6d5a19224eee279c44e8ff2bb37ba331d1df.tar.gz rust-6d2b6d5a19224eee279c44e8ff2bb37ba331d1df.zip | |
Enforce 80 char lines in extended errors.
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/diagnostics.rs | 14 | ||||
| -rw-r--r-- | src/libsyntax/diagnostics/plugin.rs | 15 |
2 files changed, 20 insertions, 9 deletions
diff --git a/src/librustc/diagnostics.rs b/src/librustc/diagnostics.rs index fedcd582cd9..092d0cc4424 100644 --- a/src/librustc/diagnostics.rs +++ b/src/librustc/diagnostics.rs @@ -55,15 +55,17 @@ underscore `_` wildcard pattern can be added after all other patterns to match // FIXME: Remove duplication here? E0005: r##" -Patterns used to bind names must be irrefutable, that is, they must guarantee that a -name will be extracted in all cases. If you encounter this error you probably need -to use a `match` or `if let` to deal with the possibility of failure. +Patterns used to bind names must be irrefutable, that is, they must guarantee +that a name will be extracted in all cases. If you encounter this error you +probably need to use a `match` or `if let` to deal with the possibility of +failure. "##, E0006: r##" -Patterns used to bind names must be irrefutable, that is, they must guarantee that a -name will be extracted in all cases. If you encounter this error you probably need -to use a `match` or `if let` to deal with the possibility of failure. +Patterns used to bind names must be irrefutable, that is, they must guarantee +that a name will be extracted in all cases. If you encounter this error you +probably need to use a `match` or `if let` to deal with the possibility of +failure. "##, E0007: r##" diff --git a/src/libsyntax/diagnostics/plugin.rs b/src/libsyntax/diagnostics/plugin.rs index de7964c9230..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,16 +95,22 @@ pub fn expand_register_diagnostic<'cx>(ecx: &'cx mut ExtCtxt, } _ => unreachable!() }; - // Check that the description starts and ends with a newline. + // 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(); - let last = msg.len() - 1; - if &msg[0..1] != "\n" || &msg[last..] != "\n" { + 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| { |
