aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_parser/src/grammar/expressions/atom.rs
diff options
context:
space:
mode:
authorVille Penttinen <[email protected]>2019-03-04 17:10:14 +0000
committerVille Penttinen <[email protected]>2019-03-04 17:10:14 +0000
commit1f4468a8dae10db4f500bde3c1708228de6137b6 (patch)
tree5d2201db2a770053f0527d82df453e3478c940c1 /crates/ra_parser/src/grammar/expressions/atom.rs
parentbbaf750b10810c21d42710a5d12181ca73099525 (diff)
Add support for parsing multiple if and while-let patterns
Diffstat (limited to 'crates/ra_parser/src/grammar/expressions/atom.rs')
-rw-r--r--crates/ra_parser/src/grammar/expressions/atom.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/crates/ra_parser/src/grammar/expressions/atom.rs b/crates/ra_parser/src/grammar/expressions/atom.rs
index e74305b6a..dfa391632 100644
--- a/crates/ra_parser/src/grammar/expressions/atom.rs
+++ b/crates/ra_parser/src/grammar/expressions/atom.rs
@@ -281,10 +281,20 @@ 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) {
293 p.eat(PIPE);
287 patterns::pattern(p); 294 patterns::pattern(p);
295 while p.eat(PIPE) {
296 patterns::pattern(p);
297 }
288 p.expect(EQ); 298 p.expect(EQ);
289 } 299 }
290 expr_no_struct(p); 300 expr_no_struct(p);