about summary refs log tree commit diff
path: root/src/libsyntax_pos
diff options
context:
space:
mode:
authorNicholas Nethercote <nnethercote@mozilla.com>2018-05-08 19:58:54 +1000
committerNicholas Nethercote <nnethercote@mozilla.com>2018-05-14 14:41:34 +1000
commite913d692117e57ea2908461865aa08037f0bd2b9 (patch)
treeb756de98b23cedccbf0fd731d3c7e71876960f5c /src/libsyntax_pos
parent444b770f4cd8d817e7b7fec683ea301620034d13 (diff)
downloadrust-e913d692117e57ea2908461865aa08037f0bd2b9.tar.gz
rust-e913d692117e57ea2908461865aa08037f0bd2b9.zip
Remove `StringReader::col`.
It only has a single use, within code handling indented block comments.
We can replace that with the new `FileMap::col_pos()`, which computes
the col position (BytePos instead of CharPos) based on the record of the
last newline char (which we already record).

This is actually an improvement, because
`trim_whitespace_prefix_and_push_line()` was using `col`, which is a
`CharPos`, as a slice index, which is a byte/char confusion.
Diffstat (limited to 'src/libsyntax_pos')
-rw-r--r--src/libsyntax_pos/lib.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libsyntax_pos/lib.rs b/src/libsyntax_pos/lib.rs
index 2bab958dced..26ab5d0a34b 100644
--- a/src/libsyntax_pos/lib.rs
+++ b/src/libsyntax_pos/lib.rs
@@ -971,6 +971,15 @@ impl FileMap {
         lines.push(pos);
     }
 
+    /// Return the BytePos of the beginning of the current line.
+    pub fn line_begin_pos(&self) -> BytePos {
+        let lines = self.lines.borrow();
+        match lines.last() {
+            Some(&line_pos) => line_pos,
+            None => self.start_pos,
+        }
+    }
+
     /// Add externally loaded source.
     /// If the hash of the input doesn't match or no input is supplied via None,
     /// it is interpreted as an error and the corresponding enum variant is set.