Special-case literals in `parse_bottom_expr`.
This makes parsing faster, particularly for code with large constants,
for two reasons:
- it skips all the keyword comparisons for literals;
- it skips the allocation done by the `mk_expr` call in
`parse_literal_maybe_minus`.
r? @petrochenkov
// | ^ expected expression
// ```
self.bump();
- return Ok(self.mk_expr(self.span, ExprKind::Err, ThinVec::new()));
+ return Ok(self.mk_expr(self.token.span, ExprKind::Err, ThinVec::new()));
}
- match self.parse_literal_maybe_minus() {
- Ok(expr) => {
- hi = expr.span;
- ex = expr.node.clone();
- }
- Err(mut err) => {
- self.cancel(&mut err);
- return Err(self.expected_expression_found());
- }
- }
+ parse_lit!()
}
}
}