File tree Expand file tree Collapse file tree 3 files changed +9
-7
lines changed Expand file tree Collapse file tree 3 files changed +9
-7
lines changed Original file line number Diff line number Diff line change @@ -172,6 +172,7 @@ fn maybe_source_file_to_parser(
172172 parser. unclosed_delims = unclosed_delims;
173173 if parser. token == token:: Eof && parser. token . span . is_dummy ( ) {
174174 parser. token . span = Span :: new ( end_pos, end_pos, parser. token . span . ctxt ( ) ) ;
175+ assert ! ( parser. unnormalized_token. is_none( ) ) ;
175176 }
176177
177178 Ok ( parser)
Original file line number Diff line number Diff line change @@ -1400,8 +1400,9 @@ impl<'a> Parser<'a> {
14001400 }
14011401
14021402 fn report_invalid_macro_expansion_item ( & self , args : & MacArgs ) {
1403+ let span = args. span ( ) . expect ( "undelimited macro call" ) ;
14031404 let mut err = self . struct_span_err (
1404- self . prev_span ,
1405+ span ,
14051406 "macros that expand to items must be delimited with braces or followed by a semicolon" ,
14061407 ) ;
14071408 if self . unclosed_delims . is_empty ( ) {
@@ -1416,14 +1417,14 @@ impl<'a> Parser<'a> {
14161417 ) ;
14171418 } else {
14181419 err. span_suggestion (
1419- self . prev_span ,
1420+ span ,
14201421 "change the delimiters to curly braces" ,
14211422 " { /* items */ }" . to_string ( ) ,
14221423 Applicability :: HasPlaceholders ,
14231424 ) ;
14241425 }
14251426 err. span_suggestion (
1426- self . prev_span . shrink_to_hi ( ) ,
1427+ span . shrink_to_hi ( ) ,
14271428 "add a semicolon" ,
14281429 ';' . to_string ( ) ,
14291430 Applicability :: MaybeIncorrect ,
Original file line number Diff line number Diff line change @@ -95,7 +95,7 @@ pub struct Parser<'a> {
9595 /// The current non-normalized token if it's different from `token`.
9696 /// Preferable use is through the `unnormalized_token()` getter.
9797 /// Use span from this token if you need to concatenate it with some neighbouring spans.
98- unnormalized_token : Option < Token > ,
98+ pub unnormalized_token : Option < Token > ,
9999 /// The previous normalized token.
100100 /// Use span from this token if you need an isolated span.
101101 prev_token : Token ,
@@ -1096,15 +1096,15 @@ impl<'a> Parser<'a> {
10961096 & mut self . token_cursor . frame ,
10971097 self . token_cursor . stack . pop ( ) . unwrap ( ) ,
10981098 ) ;
1099- self . token . span = frame. span . entire ( ) ;
1099+ self . token = Token :: new ( TokenKind :: CloseDelim ( frame. delim ) , frame. span . close ) ;
1100+ self . unnormalized_token = None ;
11001101 self . bump ( ) ;
11011102 TokenTree :: Delimited ( frame. span , frame. delim , frame. tree_cursor . stream . into ( ) )
11021103 }
11031104 token:: CloseDelim ( _) | token:: Eof => unreachable ! ( ) ,
11041105 _ => {
1105- let token = self . token . clone ( ) ;
11061106 self . bump ( ) ;
1107- TokenTree :: Token ( token )
1107+ TokenTree :: Token ( self . prev_token . clone ( ) )
11081108 }
11091109 }
11101110 }
You can’t perform that action at this time.
0 commit comments