@@ -213,6 +213,7 @@ impl<'a> Parser<'a> {
213213
214214 let start_token = ( self . token . clone ( ) , self . token_spacing ) ;
215215 let cursor_snapshot = self . token_cursor . clone ( ) ;
216+ let start_pos = self . num_bump_calls ;
216217
217218 let has_outer_attrs = !attrs. attrs . is_empty ( ) ;
218219 let prev_capturing = std:: mem:: replace ( & mut self . capture_state . capturing , Capturing :: Yes ) ;
@@ -273,8 +274,7 @@ impl<'a> Parser<'a> {
273274
274275 let replace_ranges_end = self . capture_state . replace_ranges . len ( ) ;
275276
276- let cursor_snapshot_next_calls = cursor_snapshot. num_next_calls ;
277- let mut end_pos = self . token_cursor . num_next_calls ;
277+ let mut end_pos = self . num_bump_calls ;
278278
279279 let mut captured_trailing = false ;
280280
@@ -301,12 +301,12 @@ impl<'a> Parser<'a> {
301301 // then extend the range of captured tokens to include it, since the parser
302302 // was not actually bumped past it. When the `LazyAttrTokenStream` gets converted
303303 // into an `AttrTokenStream`, we will create the proper token.
304- if self . token_cursor . break_last_token {
304+ if self . break_last_token {
305305 assert ! ( !captured_trailing, "Cannot set break_last_token and have trailing token" ) ;
306306 end_pos += 1 ;
307307 }
308308
309- let num_calls = end_pos - cursor_snapshot_next_calls ;
309+ let num_calls = end_pos - start_pos ;
310310
311311 // If we have no attributes, then we will never need to
312312 // use any replace ranges.
@@ -316,7 +316,7 @@ impl<'a> Parser<'a> {
316316 // Grab any replace ranges that occur *inside* the current AST node.
317317 // We will perform the actual replacement when we convert the `LazyAttrTokenStream`
318318 // to an `AttrTokenStream`.
319- let start_calls: u32 = cursor_snapshot_next_calls . try_into ( ) . unwrap ( ) ;
319+ let start_calls: u32 = start_pos . try_into ( ) . unwrap ( ) ;
320320 self . capture_state . replace_ranges [ replace_ranges_start..replace_ranges_end]
321321 . iter ( )
322322 . cloned ( )
@@ -331,7 +331,7 @@ impl<'a> Parser<'a> {
331331 start_token,
332332 num_calls,
333333 cursor_snapshot,
334- break_last_token : self . token_cursor . break_last_token ,
334+ break_last_token : self . break_last_token ,
335335 replace_ranges,
336336 } ) ;
337337
@@ -359,14 +359,10 @@ impl<'a> Parser<'a> {
359359 // with a `FlatToken::AttrTarget`. If this AST node is inside an item
360360 // that has `#[derive]`, then this will allow us to cfg-expand this
361361 // AST node.
362- let start_pos =
363- if has_outer_attrs { attrs. start_pos } else { cursor_snapshot_next_calls } ;
362+ let start_pos = if has_outer_attrs { attrs. start_pos } else { start_pos } ;
364363 let new_tokens = vec ! [ ( FlatToken :: AttrTarget ( attr_data) , Spacing :: Alone ) ] ;
365364
366- assert ! (
367- !self . token_cursor. break_last_token,
368- "Should not have unglued last token with cfg attr"
369- ) ;
365+ assert ! ( !self . break_last_token, "Should not have unglued last token with cfg attr" ) ;
370366 let range: Range < u32 > = ( start_pos. try_into ( ) . unwrap ( ) ) ..( end_pos. try_into ( ) . unwrap ( ) ) ;
371367 self . capture_state . replace_ranges . push ( ( range, new_tokens) ) ;
372368 self . capture_state . replace_ranges . extend ( inner_attr_replace_ranges) ;
@@ -464,6 +460,6 @@ mod size_asserts {
464460 use rustc_data_structures:: static_assert_size;
465461 // tidy-alphabetical-start
466462 static_assert_size ! ( AttrWrapper , 16 ) ;
467- static_assert_size ! ( LazyAttrTokenStreamImpl , 120 ) ;
463+ static_assert_size ! ( LazyAttrTokenStreamImpl , 104 ) ;
468464 // tidy-alphabetical-end
469465}
0 commit comments