about summary refs log tree commit diff
path: root/src/libsyntax/codemap.rs
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-11-14 22:27:53 -0800
committerBrian Anderson <banderson@mozilla.com>2012-11-15 14:24:53 -0800
commit4a0f4f5e311b7443b29ea31ad0e68e6b4aa63736 (patch)
tree6109fe27f2ae9a5d984aeb72c97d41efc15f104d /src/libsyntax/codemap.rs
parentb1dff40bae94dd0fd1e4846fd7b76723d0a3f9f9 (diff)
Refactor the lexer to use FilePos types
Diffstat (limited to 'src/libsyntax/codemap.rs')
-rw-r--r--src/libsyntax/codemap.rs19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs
index f3b0611e463..e1c5eb07eb8 100644
--- a/src/libsyntax/codemap.rs
+++ b/src/libsyntax/codemap.rs
@@ -200,11 +200,8 @@ pub impl FileMap {
                                      start_pos);
     }
 
-    fn next_line(@self, +chpos: CharPos, +byte_pos: BytePos) {
-        self.lines.push(FilePos {
-            ch: chpos,
-            byte: byte_pos + self.start_pos.byte
-        });
+    fn next_line(@self, +pos: FilePos) {
+        self.lines.push(pos);
     }
 
     pub fn get_line(@self, line: int) -> ~str unsafe {
@@ -231,6 +228,18 @@ pub impl CodeMap {
     }
 
     pub fn add_filemap(@self, filemap: @FileMap) {
+        let expected_byte_pos = if self.files.len() == 0 {
+            0
+        } else {
+            let last_start = self.files.last().start_pos.byte.to_uint();
+            let last_len = self.files.last().src.len();
+            last_start + last_len
+        };
+        let actual_byte_pos = filemap.start_pos.byte.to_uint();
+        debug!("codemap: adding filemap: %s", filemap.name);
+        debug!("codemap: expected offset: %u", expected_byte_pos);
+        debug!("codemap: actual offset: %u", actual_byte_pos);
+        assert expected_byte_pos == actual_byte_pos;
         self.files.push(filemap);
     }