about summary refs log tree commit diff
path: root/compiler/rustc_parse/src/parser/nonterminal.rs
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2024-06-20 16:36:35 -0400
committerMichael Goulet <michael@errs.io>2024-07-16 12:06:25 -0400
commitd0a1851ec2cf84bdb41bc4d788b3995a8463c543 (patch)
tree6b7333a6eb3800ad80d39cfb57080251d7e5db3d /compiler/rustc_parse/src/parser/nonterminal.rs
parenta91f7d72f12efcc00ecf71591f066c534d45ddf7 (diff)
downloadrust-d0a1851ec2cf84bdb41bc4d788b3995a8463c543.tar.gz
rust-d0a1851ec2cf84bdb41bc4d788b3995a8463c543.zip
Deny keyword lifetimes pre-expansion
Diffstat (limited to 'compiler/rustc_parse/src/parser/nonterminal.rs')
-rw-r--r--compiler/rustc_parse/src/parser/nonterminal.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/rustc_parse/src/parser/nonterminal.rs b/compiler/rustc_parse/src/parser/nonterminal.rs
index 4a78b427832..41e31d76d62 100644
--- a/compiler/rustc_parse/src/parser/nonterminal.rs
+++ b/compiler/rustc_parse/src/parser/nonterminal.rs
@@ -177,8 +177,11 @@ impl<'a> Parser<'a> {
                     .collect_tokens_no_attrs(|this| this.parse_visibility(FollowedByType::Yes))?))
             }
             NonterminalKind::Lifetime => {
-                return if self.check_lifetime() {
-                    Ok(ParseNtResult::Lifetime(self.expect_lifetime().ident))
+                // We want to keep `'keyword` parsing, just like `keyword` is still
+                // an ident for nonterminal purposes.
+                return if let Some(ident) = self.token.lifetime() {
+                    self.bump();
+                    Ok(ParseNtResult::Lifetime(ident))
                 } else {
                     Err(self.dcx().create_err(UnexpectedNonterminal::Lifetime {
                         span: self.token.span,