Skip to content

Commit 3543a0f

Browse files
authored
Auto merge of #36969 - nnethercote:rename-Parser-fields, r=eddyb
Clarify the positions of the lexer and parser The lexer and parser use unclear names to indicate their positions in the source code. I propose the following renamings. Lexer: ``` pos -> next_pos # it's actually the next pos! last_pos -> pos # it's actually the current pos! curr -> ch # the current char curr_is -> ch_is # tests the current char col (unchanged) # the current column ``` parser ``` - last_span -> prev_span # the previous token's span - last_token_kind -> prev_token_kind # the previous token's kind - LastTokenKind -> PrevTokenKind # ditto (but the type) - token (unchanged) # the current token - span (unchanged) # the current span ``` Things to note: - This proposal removes all uses of "last", which is an unclear word because it could mean (a) previous, (b) final, or (c) most recent, i.e. current. - The "current" things (ch, col, token, span) consistently lack a prefix. The "previous" and "next" things consistently have a prefix.
2 parents 1d3dfa5 + 94b3659 commit 3543a0f

File tree

9 files changed

+414
-415
lines changed

9 files changed

+414
-415
lines changed

src/librustc_metadata/creader.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ impl<'a> CrateReader<'a> {
582582
unreachable!();
583583
}
584584
};
585-
let local_span = mk_sp(lo, p.last_span.hi);
585+
let local_span = mk_sp(lo, p.prev_span.hi);
586586

587587
// Mark the attrs as used
588588
for attr in &def.attrs {

src/librustc_save_analysis/span_utils.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,9 @@ impl<'a> SpanUtils<'a> {
139139
let mut prev = toks.real_token();
140140
let mut result = None;
141141
let mut bracket_count = 0;
142-
let mut last_span = None;
142+
let mut prev_span = None;
143143
while prev.tok != token::Eof {
144-
last_span = None;
144+
prev_span = None;
145145
let mut next = toks.real_token();
146146

147147
if (next.tok == token::OpenDelim(token::Paren) || next.tok == token::Lt) &&
@@ -166,12 +166,12 @@ impl<'a> SpanUtils<'a> {
166166
};
167167

168168
if prev.tok.is_ident() && bracket_count == 0 {
169-
last_span = Some(prev.sp);
169+
prev_span = Some(prev.sp);
170170
}
171171
prev = next;
172172
}
173-
if result.is_none() && last_span.is_some() {
174-
return self.make_sub_span(span, last_span);
173+
if result.is_none() && prev_span.is_some() {
174+
return self.make_sub_span(span, prev_span);
175175
}
176176
return self.make_sub_span(span, result);
177177
}

src/libsyntax/codemap.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -804,7 +804,7 @@ impl CodeMap {
804804
}
805805

806806
pub fn macro_backtrace(&self, span: Span) -> Vec<MacroBacktrace> {
807-
let mut last_span = DUMMY_SP;
807+
let mut prev_span = DUMMY_SP;
808808
let mut span = span;
809809
let mut result = vec![];
810810
loop {
@@ -827,14 +827,14 @@ impl CodeMap {
827827
None => break,
828828
Some((call_site, macro_decl_name, def_site_span)) => {
829829
// Don't print recursive invocations
830-
if !call_site.source_equal(&last_span) {
830+
if !call_site.source_equal(&prev_span) {
831831
result.push(MacroBacktrace {
832832
call_site: call_site,
833833
macro_decl_name: macro_decl_name,
834834
def_site_span: def_site_span,
835835
});
836836
}
837-
last_span = span;
837+
prev_span = span;
838838
span = call_site;
839839
}
840840
}

src/libsyntax/parse/attr.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ impl<'a> Parser<'a> {
126126
self.expect(&token::OpenDelim(token::Bracket))?;
127127
let meta_item = self.parse_meta_item()?;
128128
self.expect(&token::CloseDelim(token::Bracket))?;
129-
let hi = self.last_span.hi;
129+
let hi = self.prev_span.hi;
130130

131131
(mk_sp(lo, hi), meta_item, style)
132132
}
@@ -231,16 +231,16 @@ impl<'a> Parser<'a> {
231231
token::Eq => {
232232
self.bump();
233233
let lit = self.parse_unsuffixed_lit()?;
234-
let hi = self.last_span.hi;
234+
let hi = self.prev_span.hi;
235235
Ok(P(spanned(lo, hi, ast::MetaItemKind::NameValue(name, lit))))
236236
}
237237
token::OpenDelim(token::Paren) => {
238238
let inner_items = self.parse_meta_seq()?;
239-
let hi = self.last_span.hi;
239+
let hi = self.prev_span.hi;
240240
Ok(P(spanned(lo, hi, ast::MetaItemKind::List(name, inner_items))))
241241
}
242242
_ => {
243-
let hi = self.last_span.hi;
243+
let hi = self.prev_span.hi;
244244
Ok(P(spanned(lo, hi, ast::MetaItemKind::Word(name))))
245245
}
246246
}
@@ -253,14 +253,14 @@ impl<'a> Parser<'a> {
253253

254254
match self.parse_unsuffixed_lit() {
255255
Ok(lit) => {
256-
return Ok(spanned(lo, self.last_span.hi, ast::NestedMetaItemKind::Literal(lit)))
256+
return Ok(spanned(lo, self.prev_span.hi, ast::NestedMetaItemKind::Literal(lit)))
257257
}
258258
Err(ref mut err) => self.diagnostic().cancel(err)
259259
}
260260

261261
match self.parse_meta_item() {
262262
Ok(mi) => {
263-
return Ok(spanned(lo, self.last_span.hi, ast::NestedMetaItemKind::MetaItem(mi)))
263+
return Ok(spanned(lo, self.prev_span.hi, ast::NestedMetaItemKind::MetaItem(mi)))
264264
}
265265
Err(ref mut err) => self.diagnostic().cancel(err)
266266
}

src/libsyntax/parse/lexer/comments.rs

+20-20
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,13 @@ fn push_blank_line_comment(rdr: &StringReader, comments: &mut Vec<Comment>) {
149149
comments.push(Comment {
150150
style: BlankLine,
151151
lines: Vec::new(),
152-
pos: rdr.last_pos,
152+
pos: rdr.pos,
153153
});
154154
}
155155

156156
fn consume_whitespace_counting_blank_lines(rdr: &mut StringReader, comments: &mut Vec<Comment>) {
157-
while is_pattern_whitespace(rdr.curr) && !rdr.is_eof() {
158-
if rdr.col == CharPos(0) && rdr.curr_is('\n') {
157+
while is_pattern_whitespace(rdr.ch) && !rdr.is_eof() {
158+
if rdr.col == CharPos(0) && rdr.ch_is('\n') {
159159
push_blank_line_comment(rdr, &mut *comments);
160160
}
161161
rdr.bump();
@@ -167,7 +167,7 @@ fn read_shebang_comment(rdr: &mut StringReader,
167167
code_to_the_left: bool,
168168
comments: &mut Vec<Comment>) {
169169
debug!(">>> shebang comment");
170-
let p = rdr.last_pos;
170+
let p = rdr.pos;
171171
debug!("<<< shebang comment");
172172
comments.push(Comment {
173173
style: if code_to_the_left { Trailing } else { Isolated },
@@ -180,9 +180,9 @@ fn read_line_comments(rdr: &mut StringReader,
180180
code_to_the_left: bool,
181181
comments: &mut Vec<Comment>) {
182182
debug!(">>> line comments");
183-
let p = rdr.last_pos;
183+
let p = rdr.pos;
184184
let mut lines: Vec<String> = Vec::new();
185-
while rdr.curr_is('/') && rdr.nextch_is('/') {
185+
while rdr.ch_is('/') && rdr.nextch_is('/') {
186186
let line = rdr.read_one_line_comment();
187187
debug!("{}", line);
188188
// Doc comments are not put in comments.
@@ -240,7 +240,7 @@ fn read_block_comment(rdr: &mut StringReader,
240240
code_to_the_left: bool,
241241
comments: &mut Vec<Comment>) {
242242
debug!(">>> block comment");
243-
let p = rdr.last_pos;
243+
let p = rdr.pos;
244244
let mut lines: Vec<String> = Vec::new();
245245
let col = rdr.col;
246246
rdr.bump();
@@ -249,9 +249,9 @@ fn read_block_comment(rdr: &mut StringReader,
249249
let mut curr_line = String::from("/*");
250250

251251
// doc-comments are not really comments, they are attributes
252-
if (rdr.curr_is('*') && !rdr.nextch_is('*')) || rdr.curr_is('!') {
253-
while !(rdr.curr_is('*') && rdr.nextch_is('/')) && !rdr.is_eof() {
254-
curr_line.push(rdr.curr.unwrap());
252+
if (rdr.ch_is('*') && !rdr.nextch_is('*')) || rdr.ch_is('!') {
253+
while !(rdr.ch_is('*') && rdr.nextch_is('/')) && !rdr.is_eof() {
254+
curr_line.push(rdr.ch.unwrap());
255255
rdr.bump();
256256
}
257257
if !rdr.is_eof() {
@@ -271,19 +271,19 @@ fn read_block_comment(rdr: &mut StringReader,
271271
if rdr.is_eof() {
272272
panic!(rdr.fatal("unterminated block comment"));
273273
}
274-
if rdr.curr_is('\n') {
274+
if rdr.ch_is('\n') {
275275
trim_whitespace_prefix_and_push_line(&mut lines, curr_line, col);
276276
curr_line = String::new();
277277
rdr.bump();
278278
} else {
279-
curr_line.push(rdr.curr.unwrap());
280-
if rdr.curr_is('/') && rdr.nextch_is('*') {
279+
curr_line.push(rdr.ch.unwrap());
280+
if rdr.ch_is('/') && rdr.nextch_is('*') {
281281
rdr.bump();
282282
rdr.bump();
283283
curr_line.push('*');
284284
level += 1;
285285
} else {
286-
if rdr.curr_is('*') && rdr.nextch_is('/') {
286+
if rdr.ch_is('*') && rdr.nextch_is('/') {
287287
rdr.bump();
288288
rdr.bump();
289289
curr_line.push('/');
@@ -305,7 +305,7 @@ fn read_block_comment(rdr: &mut StringReader,
305305
Isolated
306306
};
307307
rdr.consume_non_eol_whitespace();
308-
if !rdr.is_eof() && !rdr.curr_is('\n') && lines.len() == 1 {
308+
if !rdr.is_eof() && !rdr.ch_is('\n') && lines.len() == 1 {
309309
style = Mixed;
310310
}
311311
debug!("<<< block comment");
@@ -319,11 +319,11 @@ fn read_block_comment(rdr: &mut StringReader,
319319

320320
fn consume_comment(rdr: &mut StringReader, code_to_the_left: bool, comments: &mut Vec<Comment>) {
321321
debug!(">>> consume comment");
322-
if rdr.curr_is('/') && rdr.nextch_is('/') {
322+
if rdr.ch_is('/') && rdr.nextch_is('/') {
323323
read_line_comments(rdr, code_to_the_left, comments);
324-
} else if rdr.curr_is('/') && rdr.nextch_is('*') {
324+
} else if rdr.ch_is('/') && rdr.nextch_is('*') {
325325
read_block_comment(rdr, code_to_the_left, comments);
326-
} else if rdr.curr_is('#') && rdr.nextch_is('!') {
326+
} else if rdr.ch_is('#') && rdr.nextch_is('!') {
327327
read_shebang_comment(rdr, code_to_the_left, comments);
328328
} else {
329329
panic!();
@@ -357,7 +357,7 @@ pub fn gather_comments_and_literals(span_diagnostic: &errors::Handler,
357357
loop {
358358
let mut code_to_the_left = !first_read;
359359
rdr.consume_non_eol_whitespace();
360-
if rdr.curr_is('\n') {
360+
if rdr.ch_is('\n') {
361361
code_to_the_left = false;
362362
consume_whitespace_counting_blank_lines(&mut rdr, &mut comments);
363363
}
@@ -369,7 +369,7 @@ pub fn gather_comments_and_literals(span_diagnostic: &errors::Handler,
369369
}
370370

371371

372-
let bstart = rdr.last_pos;
372+
let bstart = rdr.pos;
373373
rdr.next_token();
374374
// discard, and look ahead; we're working with internal state
375375
let TokenAndSpan { tok, sp } = rdr.peek();

0 commit comments

Comments
 (0)