Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/parser/src/grammar/patterns.rs15
1 files changed, 6 insertions, 9 deletions
diff --git a/crates/parser/src/grammar/patterns.rs b/crates/parser/src/grammar/patterns.rs
index 70ff87b238..1f622b32e5 100644
--- a/crates/parser/src/grammar/patterns.rs
+++ b/crates/parser/src/grammar/patterns.rs
@@ -223,20 +223,16 @@ fn record_pat_field(p: &mut Parser) {
p.bump(T![:]);
pattern(p);
}
- T![.] => {
- if p.at(T![..]) {
- p.bump(T![..]);
- } else {
- ident_pat(p, false);
- }
- }
T![box] => {
// FIXME: not all box patterns should be allowed
box_pat(p);
}
- _ => {
+ T![ref] | T![mut] | IDENT => {
ident_pat(p, false);
}
+ _ => {
+ p.err_and_bump("expected identifier");
+ }
}
}
@@ -405,10 +401,11 @@ fn pat_list(p: &mut Parser, ket: SyntaxKind) {
// let ref mut f @ g @ _ = ();
// }
fn ident_pat(p: &mut Parser, with_at: bool) -> CompletedMarker {
+ assert!(matches!(p.current(), T![ref] | T![mut] | IDENT));
let m = p.start();
p.eat(T![ref]);
p.eat(T![mut]);
- name(p);
+ name_r(p, PAT_RECOVERY_SET);
if with_at && p.eat(T![@]) {
pattern_single(p);
}