about summary refs log tree commit diff
path: root/src/libsyntax/errors/snippet/mod.rs
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2016-05-02 11:37:59 -0400
committerNiko Matsakis <niko@alum.mit.edu>2016-05-02 11:49:26 -0400
commit9d151a71c032b655ca457521730044237c9e130e (patch)
tree23e19200592f3534ee6d0fbafeac61c6482ad370 /src/libsyntax/errors/snippet/mod.rs
parentf359aa276216aa74868b4ead5fea9a83a8397b27 (diff)
downloadrust-9d151a71c032b655ca457521730044237c9e130e.tar.gz
rust-9d151a71c032b655ca457521730044237c9e130e.zip
do not fail if len(rendered_lines) is == 1
also handle more rendered-lines
Diffstat (limited to 'src/libsyntax/errors/snippet/mod.rs')
-rw-r--r--src/libsyntax/errors/snippet/mod.rs24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/libsyntax/errors/snippet/mod.rs b/src/libsyntax/errors/snippet/mod.rs
index 6c90bfd0818..1ec4a015742 100644
--- a/src/libsyntax/errors/snippet/mod.rs
+++ b/src/libsyntax/errors/snippet/mod.rs
@@ -475,30 +475,34 @@ impl FileInfo {
             while let Some(line) = next_line {
                 if line.annotations.is_empty() { break; }
 
-                let mut rendered_line = self.render_line(line);
+                let mut rendered_lines = self.render_line(line);
+                assert!(!rendered_lines.is_empty());
                 if old_school {
                     match self.primary_span {
                         Some(span) => {
                             let lo = codemap.lookup_char_pos(span.lo);
-                            rendered_line[0].text.insert(0, StyledString {
+                            rendered_lines[0].text.insert(0, StyledString {
                                 text: format!(":{} ", lo.line),
                                 style: Style::LineAndColumn,
                             });
-                            rendered_line[0].text.insert(0, StyledString {
+                            rendered_lines[0].text.insert(0, StyledString {
                                 text: lo.file.name.clone(),
                                 style: Style::FileNameStyle,
                             });
-                            let gap_amount = rendered_line[0].text[0].text.len() +
-                                rendered_line[0].text[1].text.len();
-                            rendered_line[1].text.insert(0, StyledString {
-                                text: vec![" "; gap_amount].join(""),
-                                style: Style::NoStyle
-                            });
+                            let gap_amount =
+                                rendered_lines[0].text[0].text.len() +
+                                rendered_lines[0].text[1].text.len();
+                            for i in 1..rendered_lines.len() {
+                                rendered_lines[i].text.insert(0, StyledString {
+                                    text: vec![" "; gap_amount].join(""),
+                                    style: Style::NoStyle
+                                });
+                            }
                         }
                         _ =>()
                     }
                 }
-                output.append(&mut rendered_line);
+                output.append(&mut rendered_lines);
                 next_line = lines_iter.next();
             }