diff options
| author | Vincenzo Palazzo <vincenzopalazzodev@gmail.com> | 2024-04-16 20:47:10 +0200 |
|---|---|---|
| committer | Eric Holk <ericholk@microsoft.com> | 2024-05-13 11:55:26 -0700 |
| commit | a55d06323aef19040aba222b7ede790291e08468 (patch) | |
| tree | d2b934c1cc39ca6ee5027e81c873b8bb31d872d4 /compiler/rustc_parse/src/parser | |
| parent | 73303c3b454379772053957d88437277a121c173 (diff) | |
| download | rust-a55d06323aef19040aba222b7ede790291e08468.tar.gz rust-a55d06323aef19040aba222b7ede790291e08468.zip | |
Macros: match const { ... } with expr nonterminal in edition 2024
Co-authored-by: Eric Holk <eric@theincredibleholk.org> Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
Diffstat (limited to 'compiler/rustc_parse/src/parser')
| -rw-r--r-- | compiler/rustc_parse/src/parser/nonterminal.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/compiler/rustc_parse/src/parser/nonterminal.rs b/compiler/rustc_parse/src/parser/nonterminal.rs index dc51d85792c..8c0f295b74b 100644 --- a/compiler/rustc_parse/src/parser/nonterminal.rs +++ b/compiler/rustc_parse/src/parser/nonterminal.rs @@ -3,6 +3,7 @@ use rustc_ast::token::{self, Delimiter, Nonterminal, Nonterminal::*, Nonterminal use rustc_ast::HasTokens; use rustc_ast_pretty::pprust; use rustc_errors::PResult; +use rustc_span::edition::Edition; use rustc_span::symbol::{kw, Ident}; use crate::errors::UnexpectedNonterminal; @@ -37,13 +38,19 @@ impl<'a> Parser<'a> { } match kind { - NonterminalKind::Expr | NonterminalKind::Expr2021 => { + NonterminalKind::Expr2021 => { token.can_begin_expr() // This exception is here for backwards compatibility. && !token.is_keyword(kw::Let) // This exception is here for backwards compatibility. && !token.is_keyword(kw::Const) } + NonterminalKind::Expr => { + token.can_begin_expr() + // This exception is here for backwards compatibility. + && !token.is_keyword(kw::Let) + && (token.span.edition() >= Edition::Edition2024 || !token.is_keyword(kw::Const)) + } NonterminalKind::Ty => token.can_begin_type(), NonterminalKind::Ident => get_macro_ident(token).is_some(), NonterminalKind::Literal => token.can_begin_literal_maybe_minus(), |
