Syntatically accept become
expressions
This commit is contained in:
parent
8d1fa473dd
commit
d7713feb99
14 changed files with 71 additions and 2 deletions
|
@ -1430,6 +1430,8 @@ impl<'a> Parser<'a> {
|
|||
self.parse_expr_yield()
|
||||
} else if self.is_do_yeet() {
|
||||
self.parse_expr_yeet()
|
||||
} else if self.eat_keyword(kw::Become) {
|
||||
self.parse_expr_become()
|
||||
} else if self.check_keyword(kw::Let) {
|
||||
self.parse_expr_let()
|
||||
} else if self.eat_keyword(kw::Underscore) {
|
||||
|
@ -1746,6 +1748,16 @@ impl<'a> Parser<'a> {
|
|||
self.maybe_recover_from_bad_qpath(expr)
|
||||
}
|
||||
|
||||
/// Parse `"become" expr`, with `"become"` token already eaten.
|
||||
fn parse_expr_become(&mut self) -> PResult<'a, P<Expr>> {
|
||||
let lo = self.prev_token.span;
|
||||
let kind = ExprKind::Become(self.parse_expr()?);
|
||||
let span = lo.to(self.prev_token.span);
|
||||
self.sess.gated_spans.gate(sym::explicit_tail_calls, span);
|
||||
let expr = self.mk_expr(span, kind);
|
||||
self.maybe_recover_from_bad_qpath(expr)
|
||||
}
|
||||
|
||||
/// Parse `"break" (('label (:? expr)?) | expr?)` with `"break"` token already eaten.
|
||||
/// If the label is followed immediately by a `:` token, the label and `:` are
|
||||
/// parsed as part of the expression (i.e. a labeled loop). The language team has
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue