11use super :: diagnostics:: report_suspicious_mismatch_block;
22use super :: diagnostics:: same_identation_level;
33use super :: diagnostics:: TokenTreeDiagInfo ;
4- use super :: { StringReader , UnmatchedBrace } ;
4+ use super :: { StringReader , UnmatchedDelim } ;
55use rustc_ast:: token:: { self , Delimiter , Token } ;
66use rustc_ast:: tokenstream:: { DelimSpan , Spacing , TokenStream , TokenTree } ;
77use rustc_ast_pretty:: pprust:: token_to_string;
@@ -18,14 +18,14 @@ pub(super) struct TokenTreesReader<'a> {
1818impl < ' a > TokenTreesReader < ' a > {
1919 pub ( super ) fn parse_all_token_trees (
2020 string_reader : StringReader < ' a > ,
21- ) -> ( PResult < ' a , TokenStream > , Vec < UnmatchedBrace > ) {
21+ ) -> ( PResult < ' a , TokenStream > , Vec < UnmatchedDelim > ) {
2222 let mut tt_reader = TokenTreesReader {
2323 string_reader,
2424 token : Token :: dummy ( ) ,
2525 diag_info : TokenTreeDiagInfo :: default ( ) ,
2626 } ;
2727 let res = tt_reader. parse_token_trees ( /* is_delimited */ false ) ;
28- ( res, tt_reader. diag_info . unmatched_braces )
28+ ( res, tt_reader. diag_info . unmatched_delims )
2929 }
3030
3131 // Parse a stream of tokens into a list of `TokenTree`s.
@@ -34,7 +34,7 @@ impl<'a> TokenTreesReader<'a> {
3434 let mut buf = Vec :: new ( ) ;
3535 loop {
3636 match self . token . kind {
37- token:: OpenDelim ( delim) => buf. push ( self . parse_token_tree_open_delim ( delim) ) ,
37+ token:: OpenDelim ( delim) => buf. push ( self . parse_token_tree_open_delim ( delim) ? ) ,
3838 token:: CloseDelim ( delim) => {
3939 return if is_delimited {
4040 Ok ( TokenStream :: new ( buf) )
@@ -43,10 +43,11 @@ impl<'a> TokenTreesReader<'a> {
4343 } ;
4444 }
4545 token:: Eof => {
46- if is_delimited {
47- self . eof_err ( ) . emit ( ) ;
48- }
49- return Ok ( TokenStream :: new ( buf) ) ;
46+ return if is_delimited {
47+ Err ( self . eof_err ( ) )
48+ } else {
49+ Ok ( TokenStream :: new ( buf) )
50+ } ;
5051 }
5152 _ => {
5253 // Get the next normal token. This might require getting multiple adjacent
@@ -78,7 +79,7 @@ impl<'a> TokenTreesReader<'a> {
7879 let mut err = self . string_reader . sess . span_diagnostic . struct_span_err ( self . token . span , msg) ;
7980 for & ( _, sp) in & self . diag_info . open_braces {
8081 err. span_label ( sp, "unclosed delimiter" ) ;
81- self . diag_info . unmatched_braces . push ( UnmatchedBrace {
82+ self . diag_info . unmatched_delims . push ( UnmatchedDelim {
8283 expected_delim : Delimiter :: Brace ,
8384 found_delim : None ,
8485 found_span : self . token . span ,
@@ -98,7 +99,7 @@ impl<'a> TokenTreesReader<'a> {
9899 err
99100 }
100101
101- fn parse_token_tree_open_delim ( & mut self , open_delim : Delimiter ) -> TokenTree {
102+ fn parse_token_tree_open_delim ( & mut self , open_delim : Delimiter ) -> PResult < ' a , TokenTree > {
102103 // The span for beginning of the delimited section
103104 let pre_span = self . token . span ;
104105
@@ -107,7 +108,7 @@ impl<'a> TokenTreesReader<'a> {
107108 // Parse the token trees within the delimiters.
108109 // We stop at any delimiter so we can try to recover if the user
109110 // uses an incorrect delimiter.
110- let tts = self . parse_token_trees ( /* is_delimited */ true ) . unwrap ( ) ;
111+ let tts = self . parse_token_trees ( /* is_delimited */ true ) ? ;
111112
112113 // Expand to cover the entire delimited token tree
113114 let delim_span = DelimSpan :: from_pair ( pre_span, self . token . span ) ;
@@ -160,7 +161,7 @@ impl<'a> TokenTreesReader<'a> {
160161 }
161162 }
162163 let ( tok, _) = self . diag_info . open_braces . pop ( ) . unwrap ( ) ;
163- self . diag_info . unmatched_braces . push ( UnmatchedBrace {
164+ self . diag_info . unmatched_delims . push ( UnmatchedDelim {
164165 expected_delim : tok,
165166 found_delim : Some ( close_delim) ,
166167 found_span : self . token . span ,
@@ -190,7 +191,7 @@ impl<'a> TokenTreesReader<'a> {
190191 _ => unreachable ! ( ) ,
191192 }
192193
193- TokenTree :: Delimited ( delim_span, open_delim, tts)
194+ Ok ( TokenTree :: Delimited ( delim_span, open_delim, tts) )
194195 }
195196
196197 fn close_delim_err ( & mut self , delim : Delimiter ) -> PErr < ' a > {
0 commit comments