Skip to content

Commit dee6c92

Browse files
committed
Refactor interpolated_or_expr_span.
It's much more complicated than it needs to be, and it doesn't modify the expression. We can do the `Result` handling outside of it, and change it to just return a span. Also fix an errant comma that makes the comment hard to read.
1 parent e46caaf commit dee6c92

File tree

1 file changed

+12
-20
lines changed
  • compiler/rustc_parse/src/parser

1 file changed

+12
-20
lines changed

compiler/rustc_parse/src/parser/expr.rs

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -626,8 +626,8 @@ impl<'a> Parser<'a> {
626626

627627
fn parse_expr_prefix_common(&mut self, lo: Span) -> PResult<'a, (Span, P<Expr>)> {
628628
self.bump();
629-
let expr = self.parse_expr_prefix(None);
630-
let (span, expr) = self.interpolated_or_expr_span(expr)?;
629+
let expr = self.parse_expr_prefix(None)?;
630+
let span = self.interpolated_or_expr_span(&expr);
631631
Ok((lo.to(span), expr))
632632
}
633633

@@ -702,20 +702,12 @@ impl<'a> Parser<'a> {
702702
self.parse_expr_unary(lo, UnOp::Not)
703703
}
704704

705-
/// Returns the span of expr, if it was not interpolated or the span of the interpolated token.
706-
fn interpolated_or_expr_span(
707-
&self,
708-
expr: PResult<'a, P<Expr>>,
709-
) -> PResult<'a, (Span, P<Expr>)> {
710-
expr.map(|e| {
711-
(
712-
match self.prev_token.kind {
713-
TokenKind::Interpolated(..) => self.prev_token.span,
714-
_ => e.span,
715-
},
716-
e,
717-
)
718-
})
705+
/// Returns the span of expr if it was not interpolated, or the span of the interpolated token.
706+
fn interpolated_or_expr_span(&self, expr: &Expr) -> Span {
707+
match self.prev_token.kind {
708+
TokenKind::Interpolated(..) => self.prev_token.span,
709+
_ => expr.span,
710+
}
719711
}
720712

721713
fn parse_assoc_op_cast(
@@ -898,8 +890,8 @@ impl<'a> Parser<'a> {
898890
self.parse_expr_prefix_range(None)
899891
} else {
900892
self.parse_expr_prefix(None)
901-
};
902-
let (hi, expr) = self.interpolated_or_expr_span(expr)?;
893+
}?;
894+
let hi = self.interpolated_or_expr_span(&expr);
903895
let span = lo.to(hi);
904896
if let Some(lt) = lifetime {
905897
self.error_remove_borrow_lifetime(span, lt.ident.span);
@@ -930,8 +922,8 @@ impl<'a> Parser<'a> {
930922
fn parse_expr_dot_or_call(&mut self, attrs: Option<AttrWrapper>) -> PResult<'a, P<Expr>> {
931923
let attrs = self.parse_or_use_outer_attributes(attrs)?;
932924
self.collect_tokens_for_expr(attrs, |this, attrs| {
933-
let base = this.parse_expr_bottom();
934-
let (span, base) = this.interpolated_or_expr_span(base)?;
925+
let base = this.parse_expr_bottom()?;
926+
let span = this.interpolated_or_expr_span(&base);
935927
this.parse_expr_dot_or_call_with(base, span, attrs)
936928
})
937929
}

0 commit comments

Comments
 (0)