@@ -17,22 +17,21 @@ pub(super) struct TokenTreesReader<'psess, 'src> {
17
17
}
18
18
19
19
impl < ' psess , ' src > TokenTreesReader < ' psess , ' src > {
20
- pub ( super ) fn parse_all_token_trees (
20
+ pub ( super ) fn lex_all_token_trees (
21
21
string_reader : StringReader < ' psess , ' src > ,
22
22
) -> ( TokenStream , Result < ( ) , Vec < PErr < ' psess > > > , Vec < UnmatchedDelim > ) {
23
23
let mut tt_reader = TokenTreesReader {
24
24
string_reader,
25
25
token : Token :: dummy ( ) ,
26
26
diag_info : TokenTreeDiagInfo :: default ( ) ,
27
27
} ;
28
- let ( _open_spacing, stream, res) =
29
- tt_reader. parse_token_trees ( /* is_delimited */ false ) ;
28
+ let ( _open_spacing, stream, res) = tt_reader. lex_token_trees ( /* is_delimited */ false ) ;
30
29
( stream, res, tt_reader. diag_info . unmatched_delims )
31
30
}
32
31
33
- // Parse a stream of tokens into a list of `TokenTree`s . The `Spacing` in
34
- // the result is that of the opening delimiter.
35
- fn parse_token_trees (
32
+ // Lex into a token stream . The `Spacing` in the result is that of the
33
+ // opening delimiter.
34
+ fn lex_token_trees (
36
35
& mut self ,
37
36
is_delimited : bool ,
38
37
) -> ( Spacing , TokenStream , Result < ( ) , Vec < PErr < ' psess > > > ) {
@@ -42,12 +41,10 @@ impl<'psess, 'src> TokenTreesReader<'psess, 'src> {
42
41
let mut buf = Vec :: new ( ) ;
43
42
loop {
44
43
match self . token . kind {
45
- token:: OpenDelim ( delim) => {
46
- buf. push ( match self . parse_token_tree_open_delim ( delim) {
47
- Ok ( val) => val,
48
- Err ( errs) => return ( open_spacing, TokenStream :: new ( buf) , Err ( errs) ) ,
49
- } )
50
- }
44
+ token:: OpenDelim ( delim) => buf. push ( match self . lex_token_tree_open_delim ( delim) {
45
+ Ok ( val) => val,
46
+ Err ( errs) => return ( open_spacing, TokenStream :: new ( buf) , Err ( errs) ) ,
47
+ } ) ,
51
48
token:: CloseDelim ( delim) => {
52
49
return (
53
50
open_spacing,
@@ -95,24 +92,24 @@ impl<'psess, 'src> TokenTreesReader<'psess, 'src> {
95
92
err
96
93
}
97
94
98
- fn parse_token_tree_open_delim (
95
+ fn lex_token_tree_open_delim (
99
96
& mut self ,
100
97
open_delim : Delimiter ,
101
98
) -> Result < TokenTree , Vec < PErr < ' psess > > > {
102
- // The span for beginning of the delimited section
99
+ // The span for beginning of the delimited section.
103
100
let pre_span = self . token . span ;
104
101
105
102
self . diag_info . open_braces . push ( ( open_delim, self . token . span ) ) ;
106
103
107
- // Parse the token trees within the delimiters.
104
+ // Lex the token trees within the delimiters.
108
105
// We stop at any delimiter so we can try to recover if the user
109
106
// uses an incorrect delimiter.
110
- let ( open_spacing, tts, res) = self . parse_token_trees ( /* is_delimited */ true ) ;
107
+ let ( open_spacing, tts, res) = self . lex_token_trees ( /* is_delimited */ true ) ;
111
108
if let Err ( errs) = res {
112
109
return Err ( self . unclosed_delim_err ( tts, errs) ) ;
113
110
}
114
111
115
- // Expand to cover the entire delimited token tree
112
+ // Expand to cover the entire delimited token tree.
116
113
let delim_span = DelimSpan :: from_pair ( pre_span, self . token . span ) ;
117
114
let sm = self . string_reader . psess . source_map ( ) ;
118
115
@@ -150,7 +147,7 @@ impl<'psess, 'src> TokenTreesReader<'psess, 'src> {
150
147
self . diag_info . last_unclosed_found_span = Some ( self . token . span ) ;
151
148
// This is a conservative error: only report the last unclosed
152
149
// delimiter. The previous unclosed delimiters could actually be
153
- // closed! The parser just hasn't gotten to them yet.
150
+ // closed! The lexer just hasn't gotten to them yet.
154
151
if let Some ( & ( _, sp) ) = self . diag_info . open_braces . last ( ) {
155
152
unclosed_delimiter = Some ( sp) ;
156
153
} ;
@@ -236,9 +233,9 @@ impl<'psess, 'src> TokenTreesReader<'psess, 'src> {
236
233
// out instead of complaining about the unclosed delims.
237
234
let mut parser = crate :: stream_to_parser ( self . string_reader . psess , tts, None ) ;
238
235
let mut diff_errs = vec ! [ ] ;
239
- // Suggest removing a `{` we think appears in an `if`/`while` condition
240
- // We want to suggest removing a `{` only if we think we're in an `if`/`while` condition, but
241
- // we have no way of tracking this in the lexer itself, so we piggyback on the parser
236
+ // Suggest removing a `{` we think appears in an `if`/`while` condition.
237
+ // We want to suggest removing a `{` only if we think we're in an `if`/`while` condition,
238
+ // but we have no way of tracking this in the lexer itself, so we piggyback on the parser.
242
239
let mut in_cond = false ;
243
240
while parser. token != token:: Eof {
244
241
if let Err ( diff_err) = parser. err_vcs_conflict_marker ( ) {
@@ -249,14 +246,15 @@ impl<'psess, 'src> TokenTreesReader<'psess, 'src> {
249
246
parser. token. kind,
250
247
token:: CloseDelim ( Delimiter :: Brace ) | token:: FatArrow
251
248
) {
252
- // end of the `if`/`while` body, or the end of a `match` guard
249
+ // End of the `if`/`while` body, or the end of a `match` guard.
253
250
in_cond = false ;
254
251
} else if in_cond && parser. token == token:: OpenDelim ( Delimiter :: Brace ) {
255
252
// Store the `&&` and `let` to use their spans later when creating the diagnostic
256
253
let maybe_andand = parser. look_ahead ( 1 , |t| t. clone ( ) ) ;
257
254
let maybe_let = parser. look_ahead ( 2 , |t| t. clone ( ) ) ;
258
255
if maybe_andand == token:: OpenDelim ( Delimiter :: Brace ) {
259
- // This might be the beginning of the `if`/`while` body (i.e., the end of the condition)
256
+ // This might be the beginning of the `if`/`while` body (i.e., the end of the
257
+ // condition).
260
258
in_cond = false ;
261
259
} else if maybe_andand == token:: AndAnd && maybe_let. is_keyword ( kw:: Let ) {
262
260
let mut err = parser. dcx ( ) . struct_span_err (
@@ -288,8 +286,7 @@ impl<'psess, 'src> TokenTreesReader<'psess, 'src> {
288
286
}
289
287
290
288
fn close_delim_err ( & mut self , delim : Delimiter ) -> PErr < ' psess > {
291
- // An unexpected closing delimiter (i.e., there is no
292
- // matching opening delimiter).
289
+ // An unexpected closing delimiter (i.e., there is no matching opening delimiter).
293
290
let token_str = token_to_string ( & self . token ) ;
294
291
let msg = format ! ( "unexpected closing delimiter: `{token_str}`" ) ;
295
292
let mut err = self . string_reader . psess . dcx . struct_span_err ( self . token . span , msg) ;
0 commit comments