summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorTheo Belaire <theo.belaire@gmail.com>2015-05-01 21:13:27 +0200
committerOliver Schneider <git1984941651981@oli-obk.de>2015-06-24 12:25:01 +0200
commit599bf45ac9afc309332388fe4bc42a100e3d1586 (patch)
treec8fc69c1c3833e685a7b06930501b5c845047b10 /src/libsyntax
parente749f724b07121e965120f6974aa0b3fda888944 (diff)
downloadrust-599bf45ac9afc309332388fe4bc42a100e3d1586.tar.gz
rust-599bf45ac9afc309332388fe4bc42a100e3d1586.zip
Indent code past the widest line number
Fixes #11715
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/diagnostic.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/libsyntax/diagnostic.rs b/src/libsyntax/diagnostic.rs
index 14dd9978b87..6c2e3dc6330 100644
--- a/src/libsyntax/diagnostic.rs
+++ b/src/libsyntax/diagnostic.rs
@@ -594,12 +594,18 @@ fn highlight_lines(err: &mut EmitterWriter,
     let display_line_infos = &lines.lines[..display_lines];
     let display_line_strings = &line_strings[..display_lines];
 
+    // Calculate the widest number to format evenly and fix #11715
+    assert!(display_line_infos.len() > 0);
+    let mut max_line_num = display_line_infos[display_line_infos.len() - 1].line_index + 1;
+    let mut digits = 0;
+    while max_line_num > 0 { max_line_num /= 10; digits += 1; }
     // Print the offending lines
     for (line_info, line) in display_line_infos.iter().zip(display_line_strings) {
-        try!(write!(&mut err.dst, "{}:{} {}\n",
+        try!(write!(&mut err.dst, "{}:{:>width$} {}\n",
                     fm.name,
                     line_info.line_index + 1,
-                    line));
+                    line,
+                    width=digits));
     }
 
     // If we elided something, put an ellipsis.