Infer type of match guard

This commit is contained in:
Marcus Klaas de Vries 2019-01-28 23:06:11 +01:00
parent 3f4f50baaa
commit 3daca3eb4d
10 changed files with 152 additions and 59 deletions

View file

@ -360,8 +360,8 @@ fn match_arm(p: &mut Parser) -> BlockLike {
while p.eat(PIPE) {
patterns::pattern(p);
}
if p.eat(IF_KW) {
expr(p);
if p.at(IF_KW) {
match_guard(p);
}
p.expect(FAT_ARROW);
let ret = expr_stmt(p);
@ -369,6 +369,20 @@ fn match_arm(p: &mut Parser) -> BlockLike {
ret
}
// test match_guard
// fn foo() {
// match () {
// _ if foo => (),
// }
// }
fn match_guard(p: &mut Parser) -> CompletedMarker {
assert!(p.at(IF_KW));
let m = p.start();
p.bump();
expr(p);
m.complete(p, MATCH_GUARD)
}
// test block_expr
// fn foo() {
// {};