mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-03 07:04:49 +00:00
Infer type of match guard
This commit is contained in:
parent
3f4f50baaa
commit
3daca3eb4d
10 changed files with 152 additions and 59 deletions
|
@ -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() {
|
||||
// {};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue