about summary refs log tree commit diff
path: root/src/librustc_parse/parser
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-12-07 03:03:15 +0100
committerMazdak Farrokhzad <twingoow@gmail.com>2019-12-23 13:51:02 +0100
commit4cfcfe9e20f4034481e8ece86f9b2f39a564c0f5 (patch)
tree10046ae33c95f023ab9019824758ebe76e1de36c /src/librustc_parse/parser
parentf6ab4394361529e538a5763cfa56401d15ac3d9e (diff)
downloadrust-4cfcfe9e20f4034481e8ece86f9b2f39a564c0f5.tar.gz
rust-4cfcfe9e20f4034481e8ece86f9b2f39a564c0f5.zip
extract parse_neg_expr
Diffstat (limited to 'src/librustc_parse/parser')
-rw-r--r--src/librustc_parse/parser/expr.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/librustc_parse/parser/expr.rs b/src/librustc_parse/parser/expr.rs
index 45d63884942..71912c7272b 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(); // `*`