@@ -406,10 +406,7 @@ impl<'a> Parser<'a> {
406
406
}
407
407
408
408
/// Parses prefix-forms of range notation: `..expr`, `..`, `..=expr`.
409
- fn parse_prefix_range_expr (
410
- & mut self ,
411
- already_parsed_attrs : Option < AttrVec > ,
412
- ) -> PResult < ' a , P < Expr > > {
409
+ fn parse_prefix_range_expr ( & mut self , attrs : Option < AttrVec > ) -> PResult < ' a , P < Expr > > {
413
410
// Check for deprecated `...` syntax.
414
411
if self . token == token:: DotDotDot {
415
412
self . err_dotdotdot_syntax ( self . token . span ) ;
@@ -420,25 +417,23 @@ impl<'a> Parser<'a> {
420
417
"parse_prefix_range_expr: token {:?} is not DotDot/DotDotEq" ,
421
418
self . token
422
419
) ;
423
- let tok = self . token . clone ( ) ;
424
- let attrs = self . parse_or_use_outer_attributes ( already_parsed_attrs) ?;
420
+
421
+ let limits = match self . token . kind {
422
+ token:: DotDot => RangeLimits :: HalfOpen ,
423
+ _ => RangeLimits :: Closed ,
424
+ } ;
425
+ let op = AssocOp :: from_token ( & self . token ) ;
426
+ let attrs = self . parse_or_use_outer_attributes ( attrs) ?;
425
427
let lo = self . token . span ;
426
- let mut hi = self . token . span ;
427
428
self . bump ( ) ;
428
- let opt_end = if self . is_at_start_of_range_notation_rhs ( ) {
429
+ let ( span , opt_end) = if self . is_at_start_of_range_notation_rhs ( ) {
429
430
// RHS must be parsed with more associativity than the dots.
430
- let next_prec = AssocOp :: from_token ( & tok) . unwrap ( ) . precedence ( ) + 1 ;
431
- Some ( self . parse_assoc_expr_with ( next_prec, LhsExpr :: NotYetParsed ) . map ( |x| {
432
- hi = x. span ;
433
- x
434
- } ) ?)
431
+ self . parse_assoc_expr_with ( op. unwrap ( ) . precedence ( ) + 1 , LhsExpr :: NotYetParsed )
432
+ . map ( |x| ( lo. to ( x. span ) , Some ( x) ) ) ?
435
433
} else {
436
- None
434
+ ( lo , None )
437
435
} ;
438
- let limits = if tok == token:: DotDot { RangeLimits :: HalfOpen } else { RangeLimits :: Closed } ;
439
-
440
- let r = self . mk_range ( None , opt_end, limits) ?;
441
- Ok ( self . mk_expr ( lo. to ( hi) , r, attrs) )
436
+ Ok ( self . mk_expr ( span, self . mk_range ( None , opt_end, limits) ?, attrs) )
442
437
}
443
438
444
439
/// Parses a prefix-unary-operator expr.
0 commit comments