]> git.lizzy.rs Git - rust.git/commitdiff
parse minus before number literal
authorcsmoe <csmoe@msn.com>
Sun, 30 Dec 2018 13:51:40 +0000 (21:51 +0800)
committercsmoe <csmoe@msn.com>
Sun, 30 Dec 2018 15:25:07 +0000 (23:25 +0800)
crates/ra_syntax/src/grammar/patterns.rs
crates/ra_syntax/tests/data/parser/inline/ok/0055_literal_pattern.rs
crates/ra_syntax/tests/data/parser/inline/ok/0055_literal_pattern.txt

index 64cdf0b1b04abcc82cebee1e239fce556cea98f3..692ffbb8c275b329bd4df2af3f38222eb2c1bdef 100644 (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);
     }
index 16f674d9db1eaa23265a7955ac47270d28817c0f..6dfd67b4ce93274dd1db5d99e649de62a21f1a27 100644 (file)
@@ -1,5 +1,6 @@
 fn main() {
     match () {
+        -1 => (),
         92 => (),
         'c' => (),
         "hello" => (),
index 99b289d562e69953b7c6f85d85c959892d646c17..71d62eaba78327f36320787dff06329a203c5e68 100644 (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)