Let let-binding raise error on unexpected keywords (#4034)

This commit is contained in:
Leedehai 2024-04-30 08:30:38 -04:00 committed by GitHub
parent eac2200c97
commit 44bc51ba4f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 22 additions and 6 deletions

View File

@ -1452,12 +1452,11 @@ fn pattern_leaf<'s>(
seen: &mut HashSet<&'s str>,
dupe: Option<&'s str>,
) {
if !p.at_set(set::PATTERN_LEAF) {
if p.current().is_keyword() {
p.eat_and_get().expected("pattern");
} else {
p.expected("pattern");
}
if p.current().is_keyword() {
p.eat_and_get().expected("pattern");
return;
} else if !p.at_set(set::PATTERN_LEAF) {
p.expected("pattern");
return;
}

View File

@ -141,3 +141,20 @@ Three
// ... where this wasn't.
// Error: 12 expected equals sign
#let (a, b)
--- issue-4027-let-binding-with-keyword-context ---
// Error: 6-13 expected pattern, found keyword `context`
// Hint: 6-13 keyword `context` is not allowed as an identifier; try `context_` instead
#let context = 5
--- issue-4027-let-binding-with-keyword-let ---
// Error: 6-9 expected pattern, found keyword `let`
// Hint: 6-9 keyword `let` is not allowed as an identifier; try `let_` instead
#let let = 5
--- issue-4027-let-binding-with-destructured-keywords ---
// Error: 7-14 expected pattern, found keyword `context`
// Hint: 7-14 keyword `context` is not allowed as an identifier; try `context_` instead
// Error: 21-24 expected pattern, found keyword `let`
// Hint: 21-24 keyword `let` is not allowed as an identifier; try `let_` instead
#let (context, foo, let) = (5, 6, 7)