fix: Fix pat fragment parsers choking on <eoi>

This commit is contained in:
Lukas Wirth 2024-06-17 19:42:56 +02:00
parent 8846b5cf4a
commit f9bb5476c3
2 changed files with 39 additions and 1 deletions

View file

@ -1883,3 +1883,41 @@ fn test() {
"#]],
);
}
#[test]
fn test_pat_fragment_eof_17441() {
check(
r#"
macro_rules! matches {
($expression:expr, $pattern:pat $(if $guard:expr)? ) => {
match $expression {
$pattern $(if $guard)? => true,
_ => false
}
};
}
fn f() {
matches!(0, 10..);
matches!(0, 10.. if true);
}
"#,
expect![[r#"
macro_rules! matches {
($expression:expr, $pattern:pat $(if $guard:expr)? ) => {
match $expression {
$pattern $(if $guard)? => true,
_ => false
}
};
}
fn f() {
match 0 {
10.. =>true , _=>false
};
match 0 {
10..if true =>true , _=>false
};
}
"#]],
);
}

View file

@ -181,7 +181,7 @@ fn pattern_single_r(p: &mut Parser<'_>, recovery_set: TokenSet) {
// ^
if matches!(
p.current(),
T![=] | T![,] | T![:] | T![')'] | T!['}'] | T![']'] | T![if]
T![=] | T![,] | T![:] | T![')'] | T!['}'] | T![']'] | T![if] | EOF
) {
// test half_open_range_pat
// fn f() {