extract parse_neg_expr
This commit is contained in:
parent
f6ab439436
commit
4cfcfe9e20
1 changed files with 9 additions and 6 deletions
|
|
@ -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(); // `*`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue