@@ -469,12 +469,7 @@ impl<'a> Parser<'a> {
469
469
. emit ( ) ;
470
470
( lo. to ( span) , self . mk_unary ( UnOp :: Not , e) )
471
471
}
472
- token:: BinOp ( token:: Minus ) => {
473
- self . bump ( ) ;
474
- let e = self . parse_prefix_expr ( None ) ;
475
- let ( span, e) = self . interpolated_or_expr_span ( e) ?;
476
- ( lo. to ( span) , self . mk_unary ( UnOp :: Neg , e) )
477
- }
472
+ token:: BinOp ( token:: Minus ) => self . parse_neg_expr ( lo) ?,
478
473
token:: BinOp ( token:: Star ) => self . parse_deref_expr ( lo) ?,
479
474
token:: BinOp ( token:: And ) | token:: AndAnd => self . parse_borrow_expr ( lo) ?,
480
475
token:: Ident ( ..) if self . token . is_keyword ( kw:: Box ) => self . parse_box_expr ( lo) ?,
@@ -486,6 +481,14 @@ impl<'a> Parser<'a> {
486
481
return Ok ( self . mk_expr ( lo. to ( hi) , ex, attrs) ) ;
487
482
}
488
483
484
+ /// Parse `-expr`.
485
+ fn parse_neg_expr ( & mut self , lo : Span ) -> PResult < ' a , ( Span , ExprKind ) > {
486
+ self . bump ( ) ; // `-`
487
+ let expr = self . parse_prefix_expr ( None ) ;
488
+ let ( span, expr) = self . interpolated_or_expr_span ( expr) ?;
489
+ Ok ( ( lo. to ( span) , self . mk_unary ( UnOp :: Neg , expr) ) )
490
+ }
491
+
489
492
/// Parse `*expr`.
490
493
fn parse_deref_expr ( & mut self , lo : Span ) -> PResult < ' a , ( Span , ExprKind ) > {
491
494
self . bump ( ) ; // `*`
0 commit comments