diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-12-07 03:03:15 +0100 |
|---|---|---|
| committer | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-12-23 13:51:02 +0100 |
| commit | 4cfcfe9e20f4034481e8ece86f9b2f39a564c0f5 (patch) | |
| tree | 10046ae33c95f023ab9019824758ebe76e1de36c /src/librustc_parse/parser | |
| parent | f6ab4394361529e538a5763cfa56401d15ac3d9e (diff) | |
| download | rust-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.rs | 15 |
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(); // `*` |
