rustc_parser: consider the in 2024 an expression
This commit is adding the possibility to parse the `_` as an expression inside the esition 2024. Link: https://rust-lang.zulipchat.com/#narrow/stream/404510-wg-macros/topic/supporting.20.60_.60.20expressions Co-authored-by: Eric Holk <eric@theincredibleholk.org> Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
This commit is contained in:
parent
47243b335e
commit
276fa19c0a
4 changed files with 83 additions and 1 deletions
|
@ -38,6 +38,7 @@ impl<'a> Parser<'a> {
|
|||
}
|
||||
|
||||
match kind {
|
||||
// `expr_2021` and earlier
|
||||
NonterminalKind::Expr(Expr2021 { .. }) => {
|
||||
token.can_begin_expr()
|
||||
// This exception is here for backwards compatibility.
|
||||
|
@ -45,8 +46,16 @@ impl<'a> Parser<'a> {
|
|||
// This exception is here for backwards compatibility.
|
||||
&& !token.is_keyword(kw::Const)
|
||||
}
|
||||
// Current edition expressions
|
||||
NonterminalKind::Expr(Expr) => {
|
||||
token.can_begin_expr()
|
||||
// In Edition 2024, `_` will be considered an expression, so we
|
||||
// need to allow it here because `token.can_begin_expr()` does
|
||||
// not consider `_` to be an expression.
|
||||
//
|
||||
// Because `can_begin_expr` is used elsewhere, we need to reduce
|
||||
// the scope of where the `_` is considered an expression to
|
||||
// just macro parsing code.
|
||||
(token.can_begin_expr() || token.is_keyword(kw::Underscore))
|
||||
// This exception is here for backwards compatibility.
|
||||
&& !token.is_keyword(kw::Let)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue