@@ -34,7 +34,7 @@ impl<'a> TokenTreesReader<'a> {
34
34
let mut buf = Vec :: new ( ) ;
35
35
loop {
36
36
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) ? ) ,
38
38
token:: CloseDelim ( delim) => {
39
39
return if is_delimited {
40
40
Ok ( TokenStream :: new ( buf) )
@@ -43,10 +43,11 @@ impl<'a> TokenTreesReader<'a> {
43
43
} ;
44
44
}
45
45
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
+ } ;
50
51
}
51
52
_ => {
52
53
// Get the next normal token. This might require getting multiple adjacent
@@ -98,7 +99,7 @@ impl<'a> TokenTreesReader<'a> {
98
99
err
99
100
}
100
101
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 > {
102
103
// The span for beginning of the delimited section
103
104
let pre_span = self . token . span ;
104
105
@@ -107,7 +108,7 @@ impl<'a> TokenTreesReader<'a> {
107
108
// Parse the token trees within the delimiters.
108
109
// We stop at any delimiter so we can try to recover if the user
109
110
// 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 ) ? ;
111
112
112
113
// Expand to cover the entire delimited token tree
113
114
let delim_span = DelimSpan :: from_pair ( pre_span, self . token . span ) ;
@@ -190,7 +191,7 @@ impl<'a> TokenTreesReader<'a> {
190
191
_ => unreachable ! ( ) ,
191
192
}
192
193
193
- TokenTree :: Delimited ( delim_span, open_delim, tts)
194
+ Ok ( TokenTree :: Delimited ( delim_span, open_delim, tts) )
194
195
}
195
196
196
197
fn close_delim_err ( & mut self , delim : Delimiter ) -> PErr < ' a > {
0 commit comments