about summary refs log tree commit diff
path: root/src/libsyntax/diagnostics/plugin.rs
diff options
context:
space:
mode:
authorMichael Sproul <micsproul@gmail.com>2015-06-14 18:46:32 +1000
committerMichael Sproul <micsproul@gmail.com>2015-06-14 18:46:32 +1000
commit328df8ebf9dc35d48c7aa829425413af3fc3a08c (patch)
treed754f9be96d651c0882a393588e2568208514818 /src/libsyntax/diagnostics/plugin.rs
parent6e7fcc44aef7b457f3be3a1971d9f026957678d5 (diff)
downloadrust-328df8ebf9dc35d48c7aa829425413af3fc3a08c.tar.gz
rust-328df8ebf9dc35d48c7aa829425413af3fc3a08c.zip
diagnostics: Allow long URLs in error explanations.
Diffstat (limited to 'src/libsyntax/diagnostics/plugin.rs')
-rw-r--r--src/libsyntax/diagnostics/plugin.rs11
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
             ));
         }