@@ -469,12 +469,7 @@ impl<'a> Parser<'a> {
469469 . emit ( ) ;
470470 ( lo. to ( span) , self . mk_unary ( UnOp :: Not , e) )
471471 }
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) ?,
478473 token:: BinOp ( token:: Star ) => self . parse_deref_expr ( lo) ?,
479474 token:: BinOp ( token:: And ) | token:: AndAnd => self . parse_borrow_expr ( lo) ?,
480475 token:: Ident ( ..) if self . token . is_keyword ( kw:: Box ) => self . parse_box_expr ( lo) ?,
@@ -486,6 +481,14 @@ impl<'a> Parser<'a> {
486481 return Ok ( self . mk_expr ( lo. to ( hi) , ex, attrs) ) ;
487482 }
488483
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+
489492 /// Parse `*expr`.
490493 fn parse_deref_expr ( & mut self , lo : Span ) -> PResult < ' a , ( Span , ExprKind ) > {
491494 self . bump ( ) ; // `*`
0 commit comments