Skip to content

Commit 7a090fb

Browse files
committed
Rename some stuff in StringReader.
- `source_text` becomes `src`, matching `FileMap::src`. - `byte_offset()` becomes `src_index()`, which makes it clearer that it's an index into `src`. (Likewise for variables containing `byte_offset` in their name.) This function also now returns a `usize` instead of a `BytePos`, because every callsite immediately converted the `BytePos` to a `usize`.
1 parent b1aae60 commit 7a090fb

File tree

1 file changed

+24
-29
lines changed
  • src/libsyntax/parse/lexer

1 file changed

+24
-29
lines changed

src/libsyntax/parse/lexer/mod.rs

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ pub struct StringReader<'a> {
6161
pub fatal_errs: Vec<DiagnosticBuilder<'a>>,
6262
// cache a direct reference to the source text, so that we don't have to
6363
// retrieve it via `self.filemap.src.as_ref().unwrap()` all the time.
64-
source_text: Lrc<String>,
64+
src: Lrc<String>,
6565
/// Stack of open delimiters and their spans. Used for error message.
6666
token: token::Token,
6767
span: Span,
@@ -176,7 +176,7 @@ impl<'a> StringReader<'a> {
176176
filemap.name));
177177
}
178178

179-
let source_text = (*filemap.src.as_ref().unwrap()).clone();
179+
let src = (*filemap.src.as_ref().unwrap()).clone();
180180

181181
StringReader {
182182
sess,
@@ -190,7 +190,7 @@ impl<'a> StringReader<'a> {
190190
// dummy values; not read
191191
peek_tok: token::Eof,
192192
peek_span: syntax_pos::DUMMY_SP,
193-
source_text,
193+
src,
194194
fatal_errs: Vec::new(),
195195
token: token::Eof,
196196
span: syntax_pos::DUMMY_SP,
@@ -326,9 +326,7 @@ impl<'a> StringReader<'a> {
326326
/// offending string to the error message
327327
fn fatal_span_verbose(&self, from_pos: BytePos, to_pos: BytePos, mut m: String) -> FatalError {
328328
m.push_str(": ");
329-
let from = self.byte_offset(from_pos).to_usize();
330-
let to = self.byte_offset(to_pos).to_usize();
331-
m.push_str(&self.source_text[from..to]);
329+
m.push_str(&self.src[self.src_index(from_pos)..self.src_index(to_pos)]);
332330
self.fatal_span_(from_pos, to_pos, &m[..])
333331
}
334332

@@ -354,8 +352,9 @@ impl<'a> StringReader<'a> {
354352
Ok(())
355353
}
356354

357-
fn byte_offset(&self, pos: BytePos) -> BytePos {
358-
(pos - self.filemap.start_pos)
355+
#[inline]
356+
fn src_index(&self, pos: BytePos) -> usize {
357+
(pos - self.filemap.start_pos).to_usize()
359358
}
360359

361360
/// Calls `f` with a string slice of the source text spanning from `start`
@@ -386,7 +385,7 @@ impl<'a> StringReader<'a> {
386385
fn with_str_from_to<T, F>(&self, start: BytePos, end: BytePos, f: F) -> T
387386
where F: FnOnce(&str) -> T
388387
{
389-
f(&self.source_text[self.byte_offset(start).to_usize()..self.byte_offset(end).to_usize()])
388+
f(&self.src[self.src_index(start)..self.src_index(end)])
390389
}
391390

392391
/// Converts CRLF to LF in the given string, raising an error on bare CR.
@@ -438,16 +437,13 @@ impl<'a> StringReader<'a> {
438437
}
439438
}
440439

441-
442440
/// Advance the StringReader by one character. If a newline is
443441
/// discovered, add it to the FileMap's list of line start offsets.
444442
pub fn bump(&mut self) {
445-
let next_byte_offset = self.byte_offset(self.next_pos).to_usize();
446-
let end = self.terminator.map_or(self.source_text.len(), |t| {
447-
self.byte_offset(t).to_usize()
448-
});
449-
if next_byte_offset < end {
450-
let next_ch = char_at(&self.source_text, next_byte_offset);
443+
let next_src_index = self.src_index(self.next_pos);
444+
let end_src_index = self.terminator.map_or(self.src.len(), |t| self.src_index(t));
445+
if next_src_index < end_src_index {
446+
let next_ch = char_at(&self.src, next_src_index);
451447
let next_ch_len = next_ch.len_utf8();
452448

453449
if self.ch.unwrap() == '\n' {
@@ -475,9 +471,9 @@ impl<'a> StringReader<'a> {
475471
}
476472

477473
pub fn nextch(&self) -> Option<char> {
478-
let offset = self.byte_offset(self.next_pos).to_usize();
479-
if offset < self.source_text.len() {
480-
Some(char_at(&self.source_text, offset))
474+
let next_src_index = self.src_index(self.next_pos);
475+
if next_src_index < self.src.len() {
476+
Some(char_at(&self.src, next_src_index))
481477
} else {
482478
None
483479
}
@@ -488,14 +484,14 @@ impl<'a> StringReader<'a> {
488484
}
489485

490486
pub fn nextnextch(&self) -> Option<char> {
491-
let offset = self.byte_offset(self.next_pos).to_usize();
492-
let s = &self.source_text[..];
493-
if offset >= s.len() {
487+
let next_src_index = self.src_index(self.next_pos);
488+
let s = &self.src[..];
489+
if next_src_index >= s.len() {
494490
return None;
495491
}
496-
let next = offset + char_at(s, offset).len_utf8();
497-
if next < s.len() {
498-
Some(char_at(s, next))
492+
let next_next_src_index = next_src_index + char_at(s, next_src_index).len_utf8();
493+
if next_next_src_index < s.len() {
494+
Some(char_at(s, next_next_src_index))
499495
} else {
500496
None
501497
}
@@ -1358,8 +1354,8 @@ impl<'a> StringReader<'a> {
13581354
loop {
13591355
self.bump();
13601356
if self.ch_is('\'') {
1361-
let start = self.byte_offset(start).to_usize();
1362-
let end = self.byte_offset(self.pos).to_usize();
1357+
let start = self.src_index(start);
1358+
let end = self.src_index(self.pos);
13631359
self.bump();
13641360
let span = self.mk_sp(start_with_quote, self.pos);
13651361
self.sess.span_diagnostic
@@ -1368,8 +1364,7 @@ impl<'a> StringReader<'a> {
13681364
.span_suggestion(span,
13691365
"if you meant to write a `str` literal, \
13701366
use double quotes",
1371-
format!("\"{}\"",
1372-
&self.source_text[start..end]))
1367+
format!("\"{}\"", &self.src[start..end]))
13731368
.emit();
13741369
return Ok(token::Literal(token::Str_(Symbol::intern("??")), None))
13751370
}

0 commit comments

Comments
 (0)