Make the expansion of guard metavars begin guard non-terminals

This commit is contained in:
León Orell Valerian Liehr
2026-04-12 03:15:26 +02:00
parent 5f36a7f807
commit fc2c72cb67
4 changed files with 16 additions and 9 deletions
+1 -5
View File
@@ -3464,11 +3464,7 @@ pub(super) fn parse_arm(&mut self) -> PResult<'a, Arm> {
}
pub(crate) fn eat_metavar_guard(&mut self) -> Option<Box<Guard>> {
self.eat_metavar_seq_with_matcher(
|mv_kind| matches!(mv_kind, MetaVarKind::Guard),
|this| this.parse_match_arm_guard(),
)
.flatten()
self.eat_metavar_seq(MetaVarKind::Guard, |this| this.parse_match_arm_guard()).flatten()
}
fn parse_match_arm_guard(&mut self) -> PResult<'a, Option<Box<Guard>>> {
@@ -105,7 +105,10 @@ fn may_be_ident(kind: MetaVarKind) -> bool {
token::Lifetime(..) | token::NtLifetime(..) => true,
_ => false,
},
NonterminalKind::Guard => token.is_keyword(kw::If),
NonterminalKind::Guard => match token.kind {
token::OpenInvisible(InvisibleOrigin::MetaVar(MetaVarKind::Guard)) => true,
_ => token.is_keyword(kw::If),
},
NonterminalKind::TT | NonterminalKind::Item | NonterminalKind::Stmt => {
token.kind.close_delim().is_none()
}