Address review comments

This commit is contained in:
Matthew Jasper 2020-02-10 20:11:44 +00:00
parent 504e2a46bd
commit 49b53cd7a0
3 changed files with 66 additions and 14 deletions

View File

@ -41,16 +41,14 @@ fn pattern_r(p: &mut Parser, recovery_set: TokenSet) {
let m = p.start(); let m = p.start();
pattern_single_r(p, recovery_set); pattern_single_r(p, recovery_set);
let mut is_or_pat = false; if !p.at(T![|]) {
m.abandon(p);
return;
}
while p.eat(T![|]) { while p.eat(T![|]) {
is_or_pat = true;
pattern_single_r(p, recovery_set); pattern_single_r(p, recovery_set);
} }
if is_or_pat { m.complete(p, OR_PAT);
m.complete(p, OR_PAT);
} else {
m.abandon(p);
}
} }
fn pattern_single_r(p: &mut Parser, recovery_set: TokenSet) { fn pattern_single_r(p: &mut Parser, recovery_set: TokenSet) {
@ -292,6 +290,9 @@ fn ref_pat(p: &mut Parser) -> CompletedMarker {
// test tuple_pat // test tuple_pat
// fn main() { // fn main() {
// let (a, b, ..) = (); // let (a, b, ..) = ();
// let (a,) = ();
// let (..) = ();
// let () = ();
// } // }
fn tuple_pat(p: &mut Parser) -> CompletedMarker { fn tuple_pat(p: &mut Parser) -> CompletedMarker {
assert!(p.at(T!['('])); assert!(p.at(T!['(']));

View File

@ -1,3 +1,6 @@
fn main() { fn main() {
let (a, b, ..) = (); let (a, b, ..) = ();
let (a,) = ();
let (..) = ();
let () = ();
} }

View File

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 39) SOURCE_FILE@[0; 94)
FN_DEF@[0; 38) FN_DEF@[0; 93)
FN_KW@[0; 2) "fn" FN_KW@[0; 2) "fn"
WHITESPACE@[2; 3) " " WHITESPACE@[2; 3) " "
NAME@[3; 7) NAME@[3; 7)
@ -8,8 +8,8 @@ SOURCE_FILE@[0; 39)
L_PAREN@[7; 8) "(" L_PAREN@[7; 8) "("
R_PAREN@[8; 9) ")" R_PAREN@[8; 9) ")"
WHITESPACE@[9; 10) " " WHITESPACE@[9; 10) " "
BLOCK_EXPR@[10; 38) BLOCK_EXPR@[10; 93)
BLOCK@[10; 38) BLOCK@[10; 93)
L_CURLY@[10; 11) "{" L_CURLY@[10; 11) "{"
WHITESPACE@[11; 16) "\n " WHITESPACE@[11; 16) "\n "
LET_STMT@[16; 36) LET_STMT@[16; 36)
@ -37,6 +37,54 @@ SOURCE_FILE@[0; 39)
L_PAREN@[33; 34) "(" L_PAREN@[33; 34) "("
R_PAREN@[34; 35) ")" R_PAREN@[34; 35) ")"
SEMI@[35; 36) ";" SEMI@[35; 36) ";"
WHITESPACE@[36; 37) "\n" WHITESPACE@[36; 41) "\n "
R_CURLY@[37; 38) "}" LET_STMT@[41; 55)
WHITESPACE@[38; 39) "\n" LET_KW@[41; 44) "let"
WHITESPACE@[44; 45) " "
TUPLE_PAT@[45; 49)
L_PAREN@[45; 46) "("
BIND_PAT@[46; 47)
NAME@[46; 47)
IDENT@[46; 47) "a"
COMMA@[47; 48) ","
R_PAREN@[48; 49) ")"
WHITESPACE@[49; 50) " "
EQ@[50; 51) "="
WHITESPACE@[51; 52) " "
TUPLE_EXPR@[52; 54)
L_PAREN@[52; 53) "("
R_PAREN@[53; 54) ")"
SEMI@[54; 55) ";"
WHITESPACE@[55; 60) "\n "
LET_STMT@[60; 74)
LET_KW@[60; 63) "let"
WHITESPACE@[63; 64) " "
TUPLE_PAT@[64; 68)
L_PAREN@[64; 65) "("
DOT_DOT_PAT@[65; 67)
DOTDOT@[65; 67) ".."
R_PAREN@[67; 68) ")"
WHITESPACE@[68; 69) " "
EQ@[69; 70) "="
WHITESPACE@[70; 71) " "
TUPLE_EXPR@[71; 73)
L_PAREN@[71; 72) "("
R_PAREN@[72; 73) ")"
SEMI@[73; 74) ";"
WHITESPACE@[74; 79) "\n "
LET_STMT@[79; 91)
LET_KW@[79; 82) "let"
WHITESPACE@[82; 83) " "
TUPLE_PAT@[83; 85)
L_PAREN@[83; 84) "("
R_PAREN@[84; 85) ")"
WHITESPACE@[85; 86) " "
EQ@[86; 87) "="
WHITESPACE@[87; 88) " "
TUPLE_EXPR@[88; 90)
L_PAREN@[88; 89) "("
R_PAREN@[89; 90) ")"
SEMI@[90; 91) ";"
WHITESPACE@[91; 92) "\n"
R_CURLY@[92; 93) "}"
WHITESPACE@[93; 94) "\n"