diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-11-14 22:27:53 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-11-15 14:24:53 -0800 |
| commit | 4a0f4f5e311b7443b29ea31ad0e68e6b4aa63736 (patch) | |
| tree | 6109fe27f2ae9a5d984aeb72c97d41efc15f104d /src/libsyntax/codemap.rs | |
| parent | b1dff40bae94dd0fd1e4846fd7b76723d0a3f9f9 (diff) | |
Refactor the lexer to use FilePos types
Diffstat (limited to 'src/libsyntax/codemap.rs')
| -rw-r--r-- | src/libsyntax/codemap.rs | 19 |
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); } |
