diff options
| author | Michael Sproul <micsproul@gmail.com> | 2015-06-14 18:46:32 +1000 |
|---|---|---|
| committer | Michael Sproul <micsproul@gmail.com> | 2015-06-14 18:46:32 +1000 |
| commit | 328df8ebf9dc35d48c7aa829425413af3fc3a08c (patch) | |
| tree | d754f9be96d651c0882a393588e2568208514818 /src/libsyntax | |
| parent | 6e7fcc44aef7b457f3be3a1971d9f026957678d5 (diff) | |
| download | rust-328df8ebf9dc35d48c7aa829425413af3fc3a08c.tar.gz rust-328df8ebf9dc35d48c7aa829425413af3fc3a08c.zip | |
diagnostics: Allow long URLs in error explanations.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/diagnostics/plugin.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libsyntax/diagnostics/plugin.rs b/src/libsyntax/diagnostics/plugin.rs index 54b09d863a3..2f7e4a16145 100644 --- a/src/libsyntax/diagnostics/plugin.rs +++ b/src/libsyntax/diagnostics/plugin.rs @@ -99,6 +99,7 @@ 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| { @@ -109,9 +110,15 @@ pub fn expand_register_diagnostic<'cx>(ecx: &'cx mut ExtCtxt, token::get_ident(*code) )); } - if msg.lines().any(|line| line.len() > MAX_DESCRIPTION_WIDTH) { + + // URLs can be unavoidably longer than the line limit, so we allow them. + // Allowed format is: `[name]: http://rust-lang.org/` + let is_url = |l: &str| l.starts_with('[') && l.contains("]:") && l.contains("http"); + + if msg.lines().any(|line| line.len() > MAX_DESCRIPTION_WIDTH && !is_url(line)) { ecx.span_err(span, &format!( - "description for error code {} contains a line longer than {} characters", + "description for error code {} contains a line longer than {} characters.\n\ + if you're inserting a long URL use the footnote style to bypass this check.", token::get_ident(*code), MAX_DESCRIPTION_WIDTH )); } |
