@@ -406,10 +406,7 @@ impl<'a> Parser<'a> {
406406 }
407407
408408 /// 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 > > {
413410 // Check for deprecated `...` syntax.
414411 if self . token == token:: DotDotDot {
415412 self . err_dotdotdot_syntax ( self . token . span ) ;
@@ -420,25 +417,23 @@ impl<'a> Parser<'a> {
420417 "parse_prefix_range_expr: token {:?} is not DotDot/DotDotEq" ,
421418 self . token
422419 ) ;
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) ?;
425427 let lo = self . token . span ;
426- let mut hi = self . token . span ;
427428 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 ( ) {
429430 // 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) ) ) ?
435433 } else {
436- None
434+ ( lo , None )
437435 } ;
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) )
442437 }
443438
444439 /// Parses a prefix-unary-operator expr.
0 commit comments