Skip to content

Commit f6ab439

Browse files
committed
extract parse_deref_expr
1 parent ada388b commit f6ab439

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

src/librustc_parse/parser/expr.rs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -475,12 +475,7 @@ impl<'a> Parser<'a> {
475475
let (span, e) = self.interpolated_or_expr_span(e)?;
476476
(lo.to(span), self.mk_unary(UnOp::Neg, e))
477477
}
478-
token::BinOp(token::Star) => {
479-
self.bump();
480-
let e = self.parse_prefix_expr(None);
481-
let (span, e) = self.interpolated_or_expr_span(e)?;
482-
(lo.to(span), self.mk_unary(UnOp::Deref, e))
483-
}
478+
token::BinOp(token::Star) => self.parse_deref_expr(lo)?,
484479
token::BinOp(token::And) | token::AndAnd => self.parse_borrow_expr(lo)?,
485480
token::Ident(..) if self.token.is_keyword(kw::Box) => self.parse_box_expr(lo)?,
486481
token::Ident(..) if self.is_mistaken_not_ident_negation() => {
@@ -491,14 +486,22 @@ impl<'a> Parser<'a> {
491486
return Ok(self.mk_expr(lo.to(hi), ex, attrs));
492487
}
493488

489+
/// Parse `*expr`.
490+
fn parse_deref_expr(&mut self, lo: Span) -> PResult<'a, (Span, ExprKind)> {
491+
self.bump(); // `*`
492+
let expr = self.parse_prefix_expr(None);
493+
let (span, expr) = self.interpolated_or_expr_span(expr)?;
494+
Ok((lo.to(span), self.mk_unary(UnOp::Deref, expr)))
495+
}
496+
494497
/// Parse `box expr`.
495498
fn parse_box_expr(&mut self, lo: Span) -> PResult<'a, (Span, ExprKind)> {
496-
self.bump();
497-
let e = self.parse_prefix_expr(None);
498-
let (span, e) = self.interpolated_or_expr_span(e)?;
499+
self.bump(); // `box`
500+
let expr = self.parse_prefix_expr(None);
501+
let (span, expr) = self.interpolated_or_expr_span(expr)?;
499502
let span = lo.to(span);
500503
self.sess.gated_spans.gate(sym::box_syntax, span);
501-
Ok((span, ExprKind::Box(e)))
504+
Ok((span, ExprKind::Box(expr)))
502505
}
503506

504507
fn is_mistaken_not_ident_negation(&self) -> bool {

0 commit comments

Comments
 (0)