aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_parser/src/grammar/expressions/atom.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_parser/src/grammar/expressions/atom.rs')
-rw-r--r--crates/ra_parser/src/grammar/expressions/atom.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/crates/ra_parser/src/grammar/expressions/atom.rs b/crates/ra_parser/src/grammar/expressions/atom.rs
index e74305b6a..9f282c74d 100644
--- a/crates/ra_parser/src/grammar/expressions/atom.rs
+++ b/crates/ra_parser/src/grammar/expressions/atom.rs
@@ -281,10 +281,16 @@ fn for_expr(p: &mut Parser, m: Option<Marker>) -> CompletedMarker {
281 281
282// test cond 282// test cond
283// fn foo() { if let Some(_) = None {} } 283// fn foo() { if let Some(_) = None {} }
284// fn bar() {
285// if let Some(_) | Some(_) = None {}
286// if let | Some(_) = None {}
287// while let Some(_) | Some(_) = None {}
288// while let | Some(_) = None {}
289// }
284fn cond(p: &mut Parser) { 290fn cond(p: &mut Parser) {
285 let m = p.start(); 291 let m = p.start();
286 if p.eat(LET_KW) { 292 if p.eat(LET_KW) {
287 patterns::pattern(p); 293 patterns::pattern_list(p);
288 p.expect(EQ); 294 p.expect(EQ);
289 } 295 }
290 expr_no_struct(p); 296 expr_no_struct(p);
@@ -376,11 +382,7 @@ pub(crate) fn match_arm_list(p: &mut Parser) {
376// } 382// }
377fn match_arm(p: &mut Parser) -> BlockLike { 383fn match_arm(p: &mut Parser) -> BlockLike {
378 let m = p.start(); 384 let m = p.start();
379 p.eat(PIPE); 385 patterns::pattern_list_r(p, TokenSet::empty());
380 patterns::pattern_r(p, TokenSet::empty());
381 while p.eat(PIPE) {
382 patterns::pattern(p);
383 }
384 if p.at(IF_KW) { 386 if p.at(IF_KW) {
385 match_guard(p); 387 match_guard(p);
386 } 388 }