diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-11-14 17:03:07 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-11-14 21:56:55 -0800 |
| commit | 3a9ccd53e559be6db3300eb161951fe75b1ff962 (patch) | |
| tree | 61a317786587ad8020a34a1a4367efb4438a1afc /src/libsyntax/parse | |
| parent | 8069d2f266b5e5f21d9cc846b0b8b8daa1812dcc (diff) | |
| download | rust-3a9ccd53e559be6db3300eb161951fe75b1ff962.tar.gz rust-3a9ccd53e559be6db3300eb161951fe75b1ff962.zip | |
Factor out some position management code in the lexer
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/lexer.rs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/libsyntax/parse/lexer.rs b/src/libsyntax/parse/lexer.rs index dbeaff28625..178d772ecc6 100644 --- a/src/libsyntax/parse/lexer.rs +++ b/src/libsyntax/parse/lexer.rs @@ -45,18 +45,17 @@ fn new_low_level_string_reader(span_diagnostic: span_handler, filemap: @codemap::FileMap, itr: @token::ident_interner) -> string_reader { + // Force the initial reader bump to start on a fresh line + let initial_char = '\n'; let r = @{span_diagnostic: span_diagnostic, src: filemap.src, - mut col: CharPos(0), mut pos: BytePos(0), mut curr: -1 as char, + mut col: CharPos(0), mut pos: BytePos(0), + mut curr: initial_char, mut chpos: filemap.start_pos.ch, filemap: filemap, interner: itr, /* dummy values; not read */ mut peek_tok: token::EOF, mut peek_span: ast_util::dummy_sp()}; - if r.pos.to_uint() < (*filemap.src).len() { - let next = str::char_range_at(*r.src, r.pos.to_uint()); - r.pos = BytePos(next.next); - r.curr = next.ch; - } + bump(r); return r; } @@ -142,9 +141,10 @@ fn bump(rdr: string_reader) { rdr.pos = BytePos(next.next); rdr.curr = next.ch; } else { + // XXX: What does this accomplish? if (rdr.curr != -1 as char) { - rdr.col += CharPos(1u); rdr.chpos += CharPos(1u); + rdr.col += CharPos(1u); rdr.curr = -1 as char; } } |
