From 4cfcfe9e20f4034481e8ece86f9b2f39a564c0f5 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Sat, 7 Dec 2019 03:03:15 +0100 Subject: [PATCH] extract parse_neg_expr --- src/librustc_parse/parser/expr.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/librustc_parse/parser/expr.rs b/src/librustc_parse/parser/expr.rs index 45d638849425..71912c7272bf 100644 --- a/src/librustc_parse/parser/expr.rs +++ b/src/librustc_parse/parser/expr.rs @@ -469,12 +469,7 @@ impl<'a> Parser<'a> { .emit(); (lo.to(span), self.mk_unary(UnOp::Not, e)) } - token::BinOp(token::Minus) => { - self.bump(); - let e = self.parse_prefix_expr(None); - let (span, e) = self.interpolated_or_expr_span(e)?; - (lo.to(span), self.mk_unary(UnOp::Neg, e)) - } + token::BinOp(token::Minus) => self.parse_neg_expr(lo)?, token::BinOp(token::Star) => self.parse_deref_expr(lo)?, token::BinOp(token::And) | token::AndAnd => self.parse_borrow_expr(lo)?, token::Ident(..) if self.token.is_keyword(kw::Box) => self.parse_box_expr(lo)?, @@ -486,6 +481,14 @@ impl<'a> Parser<'a> { return Ok(self.mk_expr(lo.to(hi), ex, attrs)); } + /// Parse `-expr`. + fn parse_neg_expr(&mut self, lo: Span) -> PResult<'a, (Span, ExprKind)> { + self.bump(); // `-` + let expr = self.parse_prefix_expr(None); + let (span, expr) = self.interpolated_or_expr_span(expr)?; + Ok((lo.to(span), self.mk_unary(UnOp::Neg, expr))) + } + /// Parse `*expr`. fn parse_deref_expr(&mut self, lo: Span) -> PResult<'a, (Span, ExprKind)> { self.bump(); // `*`