366: parse minus before number literal pattern r=matklad a=csmoe

r?@matklad

![unknown](https://user-images.githubusercontent.com/35686186/50547871-d5449e00-0c7d-11e9-9ff5-1031e78019de.png)


Co-authored-by: csmoe <csmoe@msn.com>
This commit is contained in:
bors[bot] 2018-12-30 16:40:16 +00:00
commit c0d1b17a4e
3 changed files with 51 additions and 33 deletions

View file

@ -48,11 +48,16 @@ fn atom_pat(p: &mut Parser, recovery_set: TokenSet) -> Option<CompletedMarker> {
// test literal_pattern
// fn main() {
// match () {
// -1 => (),
// 92 => (),
// 'c' => (),
// "hello" => (),
// }
// }
if p.at(MINUS) && (p.nth(1) == INT_NUMBER || p.nth(1) == FLOAT_NUMBER) {
p.bump();
}
if let Some(m) = expressions::literal(p) {
return Some(m);
}

View file

@ -1,5 +1,6 @@
fn main() {
match () {
-1 => (),
92 => (),
'c' => (),
"hello" => (),

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 95)
FN_DEF@[0; 94)
SOURCE_FILE@[0; 113)
FN_DEF@[0; 112)
FN_KW@[0; 2)
WHITESPACE@[2; 3)
NAME@[3; 7)
@ -8,22 +8,23 @@ SOURCE_FILE@[0; 95)
L_PAREN@[7; 8)
R_PAREN@[8; 9)
WHITESPACE@[9; 10)
BLOCK@[10; 94)
BLOCK@[10; 112)
L_CURLY@[10; 11)
WHITESPACE@[11; 16)
MATCH_EXPR@[16; 92)
MATCH_EXPR@[16; 110)
MATCH_KW@[16; 21)
WHITESPACE@[21; 22)
TUPLE_EXPR@[22; 24)
L_PAREN@[22; 23)
R_PAREN@[23; 24)
WHITESPACE@[24; 25)
MATCH_ARM_LIST@[25; 92)
MATCH_ARM_LIST@[25; 110)
L_CURLY@[25; 26)
WHITESPACE@[26; 35)
MATCH_ARM@[35; 43)
LITERAL@[35; 37)
INT_NUMBER@[35; 37) "92"
MINUS@[35; 36)
LITERAL@[36; 37)
INT_NUMBER@[36; 37) "1"
WHITESPACE@[37; 38)
FAT_ARROW@[38; 40)
WHITESPACE@[40; 41)
@ -32,29 +33,40 @@ SOURCE_FILE@[0; 95)
R_PAREN@[42; 43)
COMMA@[43; 44)
WHITESPACE@[44; 53)
MATCH_ARM@[53; 62)
LITERAL@[53; 56)
CHAR@[53; 56)
WHITESPACE@[56; 57)
FAT_ARROW@[57; 59)
WHITESPACE@[59; 60)
TUPLE_EXPR@[60; 62)
L_PAREN@[60; 61)
R_PAREN@[61; 62)
COMMA@[62; 63)
WHITESPACE@[63; 72)
MATCH_ARM@[72; 85)
LITERAL@[72; 79)
STRING@[72; 79)
WHITESPACE@[79; 80)
FAT_ARROW@[80; 82)
WHITESPACE@[82; 83)
TUPLE_EXPR@[83; 85)
L_PAREN@[83; 84)
R_PAREN@[84; 85)
COMMA@[85; 86)
WHITESPACE@[86; 91)
R_CURLY@[91; 92)
WHITESPACE@[92; 93)
R_CURLY@[93; 94)
WHITESPACE@[94; 95)
MATCH_ARM@[53; 61)
LITERAL@[53; 55)
INT_NUMBER@[53; 55) "92"
WHITESPACE@[55; 56)
FAT_ARROW@[56; 58)
WHITESPACE@[58; 59)
TUPLE_EXPR@[59; 61)
L_PAREN@[59; 60)
R_PAREN@[60; 61)
COMMA@[61; 62)
WHITESPACE@[62; 71)
MATCH_ARM@[71; 80)
LITERAL@[71; 74)
CHAR@[71; 74)
WHITESPACE@[74; 75)
FAT_ARROW@[75; 77)
WHITESPACE@[77; 78)
TUPLE_EXPR@[78; 80)
L_PAREN@[78; 79)
R_PAREN@[79; 80)
COMMA@[80; 81)
WHITESPACE@[81; 90)
MATCH_ARM@[90; 103)
LITERAL@[90; 97)
STRING@[90; 97)
WHITESPACE@[97; 98)
FAT_ARROW@[98; 100)
WHITESPACE@[100; 101)
TUPLE_EXPR@[101; 103)
L_PAREN@[101; 102)
R_PAREN@[102; 103)
COMMA@[103; 104)
WHITESPACE@[104; 109)
R_CURLY@[109; 110)
WHITESPACE@[110; 111)
R_CURLY@[111; 112)
WHITESPACE@[112; 113)