Avoid checking the edition as much as possible

Inside #123865, we are adding support for the new semantics
for expr2024, but we have noted a performance issue.

We realized there is a redundant check for each
token regarding an edition. This commit moves the edition
check to the end, avoiding some extra checks that
can slow down compilation time.

Link: https://github.com/rust-lang/rust/pull/123865
Co-Developed-by: @eholk
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
This commit is contained in:
Vincenzo Palazzo 2024-05-31 18:10:30 +00:00
parent 06d99cd694
commit 36d5fc9a64
No known key found for this signature in database
GPG Key ID: 8B6DC2B870B80D5F

View File

@ -47,7 +47,7 @@ impl<'a> Parser<'a> {
token.can_begin_expr() token.can_begin_expr()
// This exception is here for backwards compatibility. // This exception is here for backwards compatibility.
&& !token.is_keyword(kw::Let) && !token.is_keyword(kw::Let)
&& (token.span.edition().at_least_rust_2024() || !token.is_keyword(kw::Const)) && (!token.is_keyword(kw::Const) || token.span.edition().at_least_rust_2024())
} }
NonterminalKind::Ty => token.can_begin_type(), NonterminalKind::Ty => token.can_begin_type(),
NonterminalKind::Ident => get_macro_ident(token).is_some(), NonterminalKind::Ident => get_macro_ident(token).is_some(),