about summary refs log tree commit diff
path: root/src/librustc_span/source_map.rs
diff options
context:
space:
mode:
authorFelix S. Klock II <pnkfelix@pnkfx.org>2020-03-13 17:01:35 -0400
committerFelix S. Klock II <pnkfelix@pnkfx.org>2020-03-20 14:11:16 -0400
commitebf27fac8185ea7a779f4d21ea506377b157fc61 (patch)
treee788a408afe34724f4af9d36407ebd4e362a1b45 /src/librustc_span/source_map.rs
parentf4c675c476c18b1a11041193f2f59d695b126bc8 (diff)
Revised span-to-lines conversion to produce an empty vec on DUMMY_SP.
This required revising some of the client code to stop relying on
the returned set of lines being non-empty.
Diffstat (limited to 'src/librustc_span/source_map.rs')
-rw-r--r--src/librustc_span/source_map.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/librustc_span/source_map.rs b/src/librustc_span/source_map.rs
index 7dd9e2f6316..b1a243a5062 100644
--- a/src/librustc_span/source_map.rs
+++ b/src/librustc_span/source_map.rs
@@ -535,6 +535,10 @@ impl SourceMap {
         let (lo, hi) = self.is_valid_span(sp)?;
         assert!(hi.line >= lo.line);
 
+        if sp.is_dummy() {
+            return Ok(FileLines { file: lo.file, lines: Vec::new() });
+        }
+
         let mut lines = Vec::with_capacity(hi.line - lo.line + 1);
 
         // The span starts partway through the first line,
@@ -545,6 +549,9 @@ impl SourceMap {
         // and to the end of the line. Be careful because the line
         // numbers in Loc are 1-based, so we subtract 1 to get 0-based
         // lines.
+        //
+        // FIXME: now that we handle DUMMY_SP up above, we should consider
+        // aseerting the line numbers here are all indeed 1-based.
         let hi_line = hi.line.saturating_sub(1);
         for line_index in lo.line.saturating_sub(1)..hi_line {
             let line_len = lo.file.get_line(line_index).map(|s| s.chars().count()).unwrap_or(0);