Add support for postfix yield expressions

We had a discussion[1] today about whether postfix yield would make sense.
It's easy enough to support both in the parser, so we might as well have
both and see how people use it while the feature is experimental.

[1]: 505231568
This commit is contained in:
Eric Holk 2025-03-12 15:59:28 -07:00
parent cb50d4d856
commit edf65e735c
No known key found for this signature in database
GPG key ID: F1A772BB658A63E1
2 changed files with 41 additions and 0 deletions

View file

@ -1310,6 +1310,13 @@ impl<'a> Parser<'a> {
return self.parse_match_block(lo, match_span, self_arg, MatchKind::Postfix);
}
// Post-fix yield
if self.eat_keyword(exp!(Yield)) {
let yield_span = self.prev_token.span;
self.psess.gated_spans.gate(sym::yield_expr, yield_span);
return Ok(self.mk_expr(yield_span, ExprKind::Yield(Some(self_arg))));
}
let fn_span_lo = self.token.span;
let mut seg = self.parse_path_segment(PathStyle::Expr, None)?;
self.check_trailing_angle_brackets(&seg, &[exp!(OpenParen)]);