11use super :: { StringReader , UnmatchedBrace } ;
2-
32use rustc_ast:: token:: { self , Delimiter , Token } ;
43use rustc_ast:: tokenstream:: { DelimSpan , Spacing , TokenStream , TokenTree } ;
54use rustc_ast_pretty:: pprust:: token_to_string;
65use rustc_data_structures:: fx:: FxHashMap ;
76use rustc_errors:: { PErr , PResult } ;
87use rustc_span:: Span ;
98
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 > {
2810 string_reader : StringReader < ' a > ,
2911 token : Token ,
3012 /// Stack of open delimiters and their spans. Used for error message.
@@ -43,6 +25,23 @@ struct TokenTreesReader<'a> {
4325}
4426
4527impl < ' 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+
4645 // Parse a stream of tokens into a list of `TokenTree`s, up to an `Eof`.
4746 fn parse_all_token_trees ( & mut self ) -> PResult < ' a , TokenStream > {
4847 self . token = self . string_reader . next_token ( ) . 0 ;
0 commit comments