diff options
Diffstat (limited to 'crates/ra_parser/src/grammar/expressions/atom.rs')
-rw-r--r-- | crates/ra_parser/src/grammar/expressions/atom.rs | 14 |
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 | // } | ||
284 | fn cond(p: &mut Parser) { | 290 | fn 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 | // } |
377 | fn match_arm(p: &mut Parser) -> BlockLike { | 383 | fn 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 | } |