@@ -45,18 +45,17 @@ fn new_low_level_string_reader(span_diagnostic: span_handler,
45
45
filemap : @codemap:: FileMap ,
46
46
itr : @token:: ident_interner )
47
47
-> string_reader {
48
+ // Force the initial reader bump to start on a fresh line
49
+ let initial_char = '\n' ;
48
50
let r = @{ span_diagnostic: span_diagnostic, src: filemap. src ,
49
- mut col: CharPos ( 0 ) , mut pos: BytePos ( 0 ) , mut curr: -1 as char ,
51
+ mut col: CharPos ( 0 ) , mut pos: BytePos ( 0 ) ,
52
+ mut curr: initial_char,
50
53
mut chpos: filemap. start_pos . ch ,
51
54
filemap: filemap, interner: itr,
52
55
/* dummy values; not read */
53
56
mut peek_tok: token:: EOF ,
54
57
mut peek_span: ast_util:: dummy_sp ( ) } ;
55
- if r. pos . to_uint ( ) < ( * filemap. src ) . len ( ) {
56
- let next = str:: char_range_at ( * r. src , r. pos . to_uint ( ) ) ;
57
- r. pos = BytePos ( next. next ) ;
58
- r. curr = next. ch ;
59
- }
58
+ bump ( r) ;
60
59
return r;
61
60
}
62
61
@@ -142,9 +141,10 @@ fn bump(rdr: string_reader) {
142
141
rdr. pos = BytePos ( next. next ) ;
143
142
rdr. curr = next. ch ;
144
143
} else {
144
+ // XXX: What does this accomplish?
145
145
if ( rdr. curr != -1 as char ) {
146
- rdr. col += CharPos ( 1 u) ;
147
146
rdr. chpos += CharPos ( 1 u) ;
147
+ rdr. col += CharPos ( 1 u) ;
148
148
rdr. curr = -1 as char ;
149
149
}
150
150
}
0 commit comments