1
1
use super :: { StringReader , UnmatchedBrace } ;
2
-
3
2
use rustc_ast:: token:: { self , Delimiter , Token } ;
4
3
use rustc_ast:: tokenstream:: { DelimSpan , Spacing , TokenStream , TokenTree } ;
5
4
use rustc_ast_pretty:: pprust:: token_to_string;
6
5
use rustc_data_structures:: fx:: FxHashMap ;
7
6
use rustc_errors:: { PErr , PResult } ;
8
7
use rustc_span:: Span ;
9
8
10
- impl < ' a > StringReader < ' a > {
11
- pub ( super ) fn into_token_trees ( self ) -> ( PResult < ' a , TokenStream > , Vec < UnmatchedBrace > ) {
12
- let mut tt_reader = TokenTreesReader {
13
- string_reader : self ,
14
- token : Token :: dummy ( ) ,
15
- open_braces : Vec :: new ( ) ,
16
- unmatched_braces : Vec :: new ( ) ,
17
- matching_delim_spans : Vec :: new ( ) ,
18
- last_unclosed_found_span : None ,
19
- last_delim_empty_block_spans : FxHashMap :: default ( ) ,
20
- matching_block_spans : Vec :: new ( ) ,
21
- } ;
22
- let res = tt_reader. parse_all_token_trees ( ) ;
23
- ( res, tt_reader. unmatched_braces )
24
- }
25
- }
26
-
27
- struct TokenTreesReader < ' a > {
9
+ pub ( super ) struct TokenTreesReader < ' a > {
28
10
string_reader : StringReader < ' a > ,
29
11
token : Token ,
30
12
/// Stack of open delimiters and their spans. Used for error message.
@@ -43,6 +25,23 @@ struct TokenTreesReader<'a> {
43
25
}
44
26
45
27
impl < ' a > TokenTreesReader < ' a > {
28
+ pub ( super ) fn parse_token_trees (
29
+ string_reader : StringReader < ' a > ,
30
+ ) -> ( PResult < ' a , TokenStream > , Vec < UnmatchedBrace > ) {
31
+ let mut tt_reader = TokenTreesReader {
32
+ string_reader,
33
+ token : Token :: dummy ( ) ,
34
+ open_braces : Vec :: new ( ) ,
35
+ unmatched_braces : Vec :: new ( ) ,
36
+ matching_delim_spans : Vec :: new ( ) ,
37
+ last_unclosed_found_span : None ,
38
+ last_delim_empty_block_spans : FxHashMap :: default ( ) ,
39
+ matching_block_spans : Vec :: new ( ) ,
40
+ } ;
41
+ let res = tt_reader. parse_all_token_trees ( ) ;
42
+ ( res, tt_reader. unmatched_braces )
43
+ }
44
+
46
45
// Parse a stream of tokens into a list of `TokenTree`s, up to an `Eof`.
47
46
fn parse_all_token_trees ( & mut self ) -> PResult < ' a , TokenStream > {
48
47
self . token = self . string_reader . next_token ( ) . 0 ;
0 commit comments