diff options
-rw-r--r-- | src/parser/grammar/items/structs.rs | 3 | ||||
-rw-r--r-- | tests/data/parser/err/0000_struct_field_missing_comma.txt | 8 | ||||
-rw-r--r-- | tests/data/parser/err/0003_C++_semicolon.txt | 10 | ||||
-rw-r--r-- | tests/data/parser/err/0006_named_field_recovery.txt | 15 | ||||
-rw-r--r-- | tests/data/parser/ok/0002_struct_item_field.txt | 5 | ||||
-rw-r--r-- | tests/data/parser/ok/0016_struct_flavors.txt | 8 | ||||
-rw-r--r-- | tests/data/parser/ok/0018_struct_type_params.txt | 5 | ||||
-rw-r--r-- | tests/data/parser/ok/0019_enums.txt | 8 |
8 files changed, 38 insertions, 24 deletions
diff --git a/src/parser/grammar/items/structs.rs b/src/parser/grammar/items/structs.rs index 3c122a56f..eca0d2e64 100644 --- a/src/parser/grammar/items/structs.rs +++ b/src/parser/grammar/items/structs.rs | |||
@@ -86,7 +86,8 @@ fn named_fields(p: &mut Parser) { | |||
86 | fn named_field(p: &mut Parser) { | 86 | fn named_field(p: &mut Parser) { |
87 | let field = p.start(); | 87 | let field = p.start(); |
88 | visibility(p); | 88 | visibility(p); |
89 | if p.expect(IDENT) { | 89 | if p.at(IDENT) { |
90 | name(p); | ||
90 | p.expect(COLON); | 91 | p.expect(COLON); |
91 | types::type_ref(p); | 92 | types::type_ref(p); |
92 | field.complete(p, NAMED_FIELD); | 93 | field.complete(p, NAMED_FIELD); |
diff --git a/tests/data/parser/err/0000_struct_field_missing_comma.txt b/tests/data/parser/err/0000_struct_field_missing_comma.txt index 2c761694c..f1c772b8d 100644 --- a/tests/data/parser/err/0000_struct_field_missing_comma.txt +++ b/tests/data/parser/err/0000_struct_field_missing_comma.txt | |||
@@ -7,15 +7,17 @@ FILE@[0; 34) | |||
7 | WHITESPACE@[8; 9) | 7 | WHITESPACE@[8; 9) |
8 | L_CURLY@[9; 10) | 8 | L_CURLY@[9; 10) |
9 | NAMED_FIELD@[10; 26) | 9 | NAMED_FIELD@[10; 26) |
10 | WHITESPACE@[10; 15) | 10 | NAME@[10; 16) |
11 | IDENT@[15; 16) "a" | 11 | WHITESPACE@[10; 15) |
12 | IDENT@[15; 16) "a" | ||
12 | COLON@[16; 17) | 13 | COLON@[16; 17) |
13 | WHITESPACE@[17; 18) | 14 | WHITESPACE@[17; 18) |
14 | IDENT@[18; 21) "u32" | 15 | IDENT@[18; 21) "u32" |
15 | WHITESPACE@[21; 26) | 16 | WHITESPACE@[21; 26) |
16 | err: `expected COMMA` | 17 | err: `expected COMMA` |
17 | NAMED_FIELD@[26; 33) | 18 | NAMED_FIELD@[26; 33) |
18 | IDENT@[26; 27) "b" | 19 | NAME@[26; 27) |
20 | IDENT@[26; 27) "b" | ||
19 | COLON@[27; 28) | 21 | COLON@[27; 28) |
20 | WHITESPACE@[28; 29) | 22 | WHITESPACE@[28; 29) |
21 | IDENT@[29; 32) "u32" | 23 | IDENT@[29; 32) "u32" |
diff --git a/tests/data/parser/err/0003_C++_semicolon.txt b/tests/data/parser/err/0003_C++_semicolon.txt index e567b0775..c835a1474 100644 --- a/tests/data/parser/err/0003_C++_semicolon.txt +++ b/tests/data/parser/err/0003_C++_semicolon.txt | |||
@@ -7,15 +7,17 @@ FILE@[0; 40) | |||
7 | WHITESPACE@[8; 9) | 7 | WHITESPACE@[8; 9) |
8 | L_CURLY@[9; 10) | 8 | L_CURLY@[9; 10) |
9 | NAMED_FIELD@[10; 21) | 9 | NAMED_FIELD@[10; 21) |
10 | WHITESPACE@[10; 15) | 10 | NAME@[10; 16) |
11 | IDENT@[15; 16) "a" | 11 | WHITESPACE@[10; 15) |
12 | IDENT@[15; 16) "a" | ||
12 | COLON@[16; 17) | 13 | COLON@[16; 17) |
13 | WHITESPACE@[17; 18) | 14 | WHITESPACE@[17; 18) |
14 | IDENT@[18; 21) "i32" | 15 | IDENT@[18; 21) "i32" |
15 | COMMA@[21; 22) | 16 | COMMA@[21; 22) |
16 | NAMED_FIELD@[22; 36) | 17 | NAMED_FIELD@[22; 36) |
17 | WHITESPACE@[22; 27) | 18 | NAME@[22; 28) |
18 | IDENT@[27; 28) "b" | 19 | WHITESPACE@[22; 27) |
20 | IDENT@[27; 28) "b" | ||
19 | COLON@[28; 29) | 21 | COLON@[28; 29) |
20 | WHITESPACE@[29; 30) | 22 | WHITESPACE@[29; 30) |
21 | IDENT@[30; 36) "String" | 23 | IDENT@[30; 36) "String" |
diff --git a/tests/data/parser/err/0006_named_field_recovery.txt b/tests/data/parser/err/0006_named_field_recovery.txt index 7886beeb8..b772671e9 100644 --- a/tests/data/parser/err/0006_named_field_recovery.txt +++ b/tests/data/parser/err/0006_named_field_recovery.txt | |||
@@ -7,8 +7,9 @@ FILE@[0; 74) | |||
7 | WHITESPACE@[8; 9) | 7 | WHITESPACE@[8; 9) |
8 | L_CURLY@[9; 10) | 8 | L_CURLY@[9; 10) |
9 | NAMED_FIELD@[10; 21) | 9 | NAMED_FIELD@[10; 21) |
10 | WHITESPACE@[10; 15) | 10 | NAME@[10; 16) |
11 | IDENT@[15; 16) "f" | 11 | WHITESPACE@[10; 15) |
12 | IDENT@[15; 16) "f" | ||
12 | COLON@[16; 17) | 13 | COLON@[16; 17) |
13 | WHITESPACE@[17; 18) | 14 | WHITESPACE@[17; 18) |
14 | IDENT@[18; 21) "u32" | 15 | IDENT@[18; 21) "u32" |
@@ -17,11 +18,11 @@ FILE@[0; 74) | |||
17 | WHITESPACE@[22; 27) | 18 | WHITESPACE@[22; 27) |
18 | PUB_KW@[27; 30) | 19 | PUB_KW@[27; 30) |
19 | WHITESPACE@[30; 31) | 20 | WHITESPACE@[30; 31) |
20 | err: `expected IDENT` | ||
21 | ERROR@[31; 38) | 21 | ERROR@[31; 38) |
22 | err: `expected field declaration` | 22 | err: `expected field declaration` |
23 | INT_NUMBER@[31; 33) | 23 | INT_NUMBER@[31; 33) |
24 | WHITESPACE@[33; 38) | 24 | WHITESPACE@[33; 38) |
25 | err: `expected COMMA` | ||
25 | ERROR@[38; 40) | 26 | ERROR@[38; 40) |
26 | err: `expected field declaration` | 27 | err: `expected field declaration` |
27 | PLUS@[38; 39) | 28 | PLUS@[38; 39) |
@@ -38,14 +39,16 @@ FILE@[0; 74) | |||
38 | VISIBILITY@[48; 52) | 39 | VISIBILITY@[48; 52) |
39 | PUB_KW@[48; 51) | 40 | PUB_KW@[48; 51) |
40 | WHITESPACE@[51; 52) | 41 | WHITESPACE@[51; 52) |
41 | IDENT@[52; 53) "x" | 42 | NAME@[52; 53) |
43 | IDENT@[52; 53) "x" | ||
42 | COLON@[53; 54) | 44 | COLON@[53; 54) |
43 | WHITESPACE@[54; 55) | 45 | WHITESPACE@[54; 55) |
44 | IDENT@[55; 58) "u32" | 46 | IDENT@[55; 58) "u32" |
45 | COMMA@[58; 59) | 47 | COMMA@[58; 59) |
46 | NAMED_FIELD@[59; 70) | 48 | NAMED_FIELD@[59; 70) |
47 | WHITESPACE@[59; 64) | 49 | NAME@[59; 65) |
48 | IDENT@[64; 65) "z" | 50 | WHITESPACE@[59; 64) |
51 | IDENT@[64; 65) "z" | ||
49 | COLON@[65; 66) | 52 | COLON@[65; 66) |
50 | WHITESPACE@[66; 67) | 53 | WHITESPACE@[66; 67) |
51 | IDENT@[67; 70) "f64" | 54 | IDENT@[67; 70) "f64" |
diff --git a/tests/data/parser/ok/0002_struct_item_field.txt b/tests/data/parser/ok/0002_struct_item_field.txt index 285e6a8ef..31d3508db 100644 --- a/tests/data/parser/ok/0002_struct_item_field.txt +++ b/tests/data/parser/ok/0002_struct_item_field.txt | |||
@@ -7,8 +7,9 @@ FILE@[0; 25) | |||
7 | WHITESPACE@[8; 9) | 7 | WHITESPACE@[8; 9) |
8 | L_CURLY@[9; 10) | 8 | L_CURLY@[9; 10) |
9 | NAMED_FIELD@[10; 24) | 9 | NAMED_FIELD@[10; 24) |
10 | WHITESPACE@[10; 15) | 10 | NAME@[10; 18) |
11 | IDENT@[15; 18) "foo" | 11 | WHITESPACE@[10; 15) |
12 | IDENT@[15; 18) "foo" | ||
12 | COLON@[18; 19) | 13 | COLON@[18; 19) |
13 | WHITESPACE@[19; 20) | 14 | WHITESPACE@[19; 20) |
14 | IDENT@[20; 23) "u32" | 15 | IDENT@[20; 23) "u32" |
diff --git a/tests/data/parser/ok/0016_struct_flavors.txt b/tests/data/parser/ok/0016_struct_flavors.txt index 445559250..15462b9b9 100644 --- a/tests/data/parser/ok/0016_struct_flavors.txt +++ b/tests/data/parser/ok/0016_struct_flavors.txt | |||
@@ -32,8 +32,9 @@ FILE@[0; 97) | |||
32 | WHITESPACE@[43; 44) | 32 | WHITESPACE@[43; 44) |
33 | L_CURLY@[44; 45) | 33 | L_CURLY@[44; 45) |
34 | NAMED_FIELD@[45; 56) | 34 | NAMED_FIELD@[45; 56) |
35 | WHITESPACE@[45; 50) | 35 | NAME@[45; 51) |
36 | IDENT@[50; 51) "a" | 36 | WHITESPACE@[45; 50) |
37 | IDENT@[50; 51) "a" | ||
37 | COLON@[51; 52) | 38 | COLON@[51; 52) |
38 | WHITESPACE@[52; 53) | 39 | WHITESPACE@[52; 53) |
39 | IDENT@[53; 56) "u32" | 40 | IDENT@[53; 56) "u32" |
@@ -43,7 +44,8 @@ FILE@[0; 97) | |||
43 | WHITESPACE@[57; 62) | 44 | WHITESPACE@[57; 62) |
44 | PUB_KW@[62; 65) | 45 | PUB_KW@[62; 65) |
45 | WHITESPACE@[65; 66) | 46 | WHITESPACE@[65; 66) |
46 | IDENT@[66; 67) "b" | 47 | NAME@[66; 67) |
48 | IDENT@[66; 67) "b" | ||
47 | COLON@[67; 68) | 49 | COLON@[67; 68) |
48 | WHITESPACE@[68; 69) | 50 | WHITESPACE@[68; 69) |
49 | IDENT@[69; 72) "u32" | 51 | IDENT@[69; 72) "u32" |
diff --git a/tests/data/parser/ok/0018_struct_type_params.txt b/tests/data/parser/ok/0018_struct_type_params.txt index 34b73e8fd..fe14effce 100644 --- a/tests/data/parser/ok/0018_struct_type_params.txt +++ b/tests/data/parser/ok/0018_struct_type_params.txt | |||
@@ -40,8 +40,9 @@ FILE@[0; 290) | |||
40 | WHITESPACE@[45; 46) | 40 | WHITESPACE@[45; 46) |
41 | L_CURLY@[46; 47) | 41 | L_CURLY@[46; 47) |
42 | NAMED_FIELD@[47; 55) | 42 | NAMED_FIELD@[47; 55) |
43 | WHITESPACE@[47; 48) | 43 | NAME@[47; 49) |
44 | IDENT@[48; 49) "u" | 44 | WHITESPACE@[47; 48) |
45 | IDENT@[48; 49) "u" | ||
45 | COLON@[49; 50) | 46 | COLON@[49; 50) |
46 | WHITESPACE@[50; 51) | 47 | WHITESPACE@[50; 51) |
47 | IDENT@[51; 54) "u32" | 48 | IDENT@[51; 54) "u32" |
diff --git a/tests/data/parser/ok/0019_enums.txt b/tests/data/parser/ok/0019_enums.txt index c1588a86e..bad12bee3 100644 --- a/tests/data/parser/ok/0019_enums.txt +++ b/tests/data/parser/ok/0019_enums.txt | |||
@@ -77,8 +77,9 @@ FILE@[0; 182) | |||
77 | WHITESPACE@[102; 103) | 77 | WHITESPACE@[102; 103) |
78 | L_CURLY@[103; 104) | 78 | L_CURLY@[103; 104) |
79 | NAMED_FIELD@[104; 119) | 79 | NAMED_FIELD@[104; 119) |
80 | WHITESPACE@[104; 113) | 80 | NAME@[104; 114) |
81 | IDENT@[113; 114) "a" | 81 | WHITESPACE@[104; 113) |
82 | IDENT@[113; 114) "a" | ||
82 | COLON@[114; 115) | 83 | COLON@[114; 115) |
83 | WHITESPACE@[115; 116) | 84 | WHITESPACE@[115; 116) |
84 | IDENT@[116; 119) "u32" | 85 | IDENT@[116; 119) "u32" |
@@ -88,7 +89,8 @@ FILE@[0; 182) | |||
88 | WHITESPACE@[120; 129) | 89 | WHITESPACE@[120; 129) |
89 | PUB_KW@[129; 132) | 90 | PUB_KW@[129; 132) |
90 | WHITESPACE@[132; 133) | 91 | WHITESPACE@[132; 133) |
91 | IDENT@[133; 134) "b" | 92 | NAME@[133; 134) |
93 | IDENT@[133; 134) "b" | ||
92 | COLON@[134; 135) | 94 | COLON@[134; 135) |
93 | WHITESPACE@[135; 136) | 95 | WHITESPACE@[135; 136) |
94 | IDENT@[136; 139) "f64" | 96 | IDENT@[136; 139) "f64" |