]> git.lizzy.rs Git - rust.git/commitdiff
Parse tuple struct field initialization
authorEvgenii P <eupn@protonmail.com>
Fri, 9 Aug 2019 08:38:52 +0000 (15:38 +0700)
committerEvgenii P <eupn@protonmail.com>
Fri, 9 Aug 2019 08:38:52 +0000 (15:38 +0700)
crates/ra_parser/src/grammar.rs
crates/ra_parser/src/grammar/expressions.rs
crates/ra_syntax/test_data/parser/inline/ok/0061_struct_lit.rs
crates/ra_syntax/test_data/parser/inline/ok/0061_struct_lit.txt

index 6580340975bc8a063606280f95e9040c2bbbd219..00fb1bac932848927f537f072196ae9a4bdd80f0 100644 (file)
@@ -274,7 +274,7 @@ fn name(p: &mut Parser) {
 }
 
 fn name_ref(p: &mut Parser) {
-    if p.at(IDENT) {
+    if p.at(IDENT) || p.at(INT_NUMBER) {
         let m = p.start();
         p.bump();
         m.complete(p, NAME_REF);
index 3e49e70c725e5a4eb9d8821caf57306376cb3c20..50c938a23196b30fc004d550e162d7fab652134e 100644 (file)
@@ -572,6 +572,7 @@ fn path_expr(p: &mut Parser, r: Restrictions) -> (CompletedMarker, BlockLike) {
 //     S {};
 //     S { x, y: 32, };
 //     S { x, y: 32, ..Default::default() };
+//     TupleStruct { 0: 1 };
 // }
 pub(crate) fn named_field_list(p: &mut Parser) {
     assert!(p.at(T!['{']));
@@ -583,7 +584,7 @@ pub(crate) fn named_field_list(p: &mut Parser) {
             // fn main() {
             //     S { #[cfg(test)] field: 1 }
             // }
-            IDENT | T![#] => {
+            IDENT | INT_NUMBER | T![#] => {
                 let m = p.start();
                 attributes::outer_attributes(p);
                 name_ref(p);
index eb711f68a13048fda45c24baf81d65b314c55ad4..6285e554977220d75cfeef116439828ae3c6b182 100644 (file)
@@ -2,4 +2,5 @@ fn foo() {
     S {};
     S { x, y: 32, };
     S { x, y: 32, ..Default::default() };
+    TupleStruct { 0: 1 };
 }
index 94d1bfe2eb2c65e163bfaceb3415af9501dbdb06..d06594cae29b4ddd0c3ac9a60bd321d4f4657cca 100644 (file)
@@ -1,5 +1,5 @@
-SOURCE_FILE@[0; 86)
-  FN_DEF@[0; 85)
+SOURCE_FILE@[0; 112)
+  FN_DEF@[0; 111)
     FN_KW@[0; 2) "fn"
     WHITESPACE@[2; 3) " "
     NAME@[3; 6)
@@ -8,7 +8,7 @@ SOURCE_FILE@[0; 86)
       L_PAREN@[6; 7) "("
       R_PAREN@[7; 8) ")"
     WHITESPACE@[8; 9) " "
-    BLOCK@[9; 85)
+    BLOCK@[9; 111)
       L_CURLY@[9; 10) "{"
       WHITESPACE@[10; 15) "\n    "
       EXPR_STMT@[15; 20)
@@ -92,6 +92,27 @@ SOURCE_FILE@[0; 86)
             WHITESPACE@[80; 81) " "
             R_CURLY@[81; 82) "}"
         SEMI@[82; 83) ";"
-      WHITESPACE@[83; 84) "\n"
-      R_CURLY@[84; 85) "}"
-  WHITESPACE@[85; 86) "\n"
+      WHITESPACE@[83; 88) "\n    "
+      EXPR_STMT@[88; 109)
+        STRUCT_LIT@[88; 108)
+          PATH@[88; 99)
+            PATH_SEGMENT@[88; 99)
+              NAME_REF@[88; 99)
+                IDENT@[88; 99) "TupleStruct"
+          WHITESPACE@[99; 100) " "
+          NAMED_FIELD_LIST@[100; 108)
+            L_CURLY@[100; 101) "{"
+            WHITESPACE@[101; 102) " "
+            NAMED_FIELD@[102; 106)
+              NAME_REF@[102; 103)
+                INT_NUMBER@[102; 103) "0"
+              COLON@[103; 104) ":"
+              WHITESPACE@[104; 105) " "
+              LITERAL@[105; 106)
+                INT_NUMBER@[105; 106) "1"
+            WHITESPACE@[106; 107) " "
+            R_CURLY@[107; 108) "}"
+        SEMI@[108; 109) ";"
+      WHITESPACE@[109; 110) "\n"
+      R_CURLY@[110; 111) "}"
+  WHITESPACE@[111; 112) "\n"