aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/parser/grammar/items/structs.rs3
-rw-r--r--tests/data/parser/err/0000_struct_field_missing_comma.txt8
-rw-r--r--tests/data/parser/err/0003_C++_semicolon.txt10
-rw-r--r--tests/data/parser/err/0006_named_field_recovery.txt15
-rw-r--r--tests/data/parser/ok/0002_struct_item_field.txt5
-rw-r--r--tests/data/parser/ok/0016_struct_flavors.txt8
-rw-r--r--tests/data/parser/ok/0018_struct_type_params.txt5
-rw-r--r--tests/data/parser/ok/0019_enums.txt8
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"