aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/parser/grammar/type_args.rs2
-rw-r--r--src/parser/grammar/type_params.rs2
-rw-r--r--tests/data/parser/inline/0014_type_item_type_params.txt3
-rw-r--r--tests/data/parser/inline/0041_type_param_bounds.txt3
-rw-r--r--tests/data/parser/inline/0042_type_param_default.txt5
-rw-r--r--tests/data/parser/inline/0056_trait_item.txt3
-rw-r--r--tests/data/parser/inline/0058_type_arg.txt5
-rw-r--r--tests/data/parser/ok/0018_struct_type_params.txt30
-rw-r--r--tests/data/parser/ok/0019_enums.txt3
-rw-r--r--tests/data/parser/ok/0020_type_param_bounds.txt32
10 files changed, 56 insertions, 32 deletions
diff --git a/src/parser/grammar/type_args.rs b/src/parser/grammar/type_args.rs
index 6b2217012..276c8b4ae 100644
--- a/src/parser/grammar/type_args.rs
+++ b/src/parser/grammar/type_args.rs
@@ -35,7 +35,7 @@ fn type_arg(p: &mut Parser) {
35 m.complete(p, LIFETIME_ARG); 35 m.complete(p, LIFETIME_ARG);
36 }, 36 },
37 IDENT if p.nth(1) == EQ => { 37 IDENT if p.nth(1) == EQ => {
38 p.bump(); 38 name_ref(p);
39 p.bump(); 39 p.bump();
40 types::type_(p); 40 types::type_(p);
41 m.complete(p, ASSOC_TYPE_ARG); 41 m.complete(p, ASSOC_TYPE_ARG);
diff --git a/src/parser/grammar/type_params.rs b/src/parser/grammar/type_params.rs
index 3648ab5f3..ccb44c0df 100644
--- a/src/parser/grammar/type_params.rs
+++ b/src/parser/grammar/type_params.rs
@@ -38,7 +38,7 @@ pub(super) fn list(p: &mut Parser) {
38 fn type_param(p: &mut Parser) { 38 fn type_param(p: &mut Parser) {
39 assert!(p.at(IDENT)); 39 assert!(p.at(IDENT));
40 let m = p.start(); 40 let m = p.start();
41 p.bump(); 41 name(p);
42 if p.at(COLON) { 42 if p.at(COLON) {
43 bounds(p); 43 bounds(p);
44 } 44 }
diff --git a/tests/data/parser/inline/0014_type_item_type_params.txt b/tests/data/parser/inline/0014_type_item_type_params.txt
index 98a71414e..437ce13e1 100644
--- a/tests/data/parser/inline/0014_type_item_type_params.txt
+++ b/tests/data/parser/inline/0014_type_item_type_params.txt
@@ -7,7 +7,8 @@ FILE@[0; 21)
7 TYPE_PARAM_LIST@[11; 15) 7 TYPE_PARAM_LIST@[11; 15)
8 L_ANGLE@[11; 12) 8 L_ANGLE@[11; 12)
9 TYPE_PARAM@[12; 13) 9 TYPE_PARAM@[12; 13)
10 IDENT@[12; 13) "T" 10 NAME@[12; 13)
11 IDENT@[12; 13) "T"
11 R_ANGLE@[13; 14) 12 R_ANGLE@[13; 14)
12 WHITESPACE@[14; 15) 13 WHITESPACE@[14; 15)
13 EQ@[15; 16) 14 EQ@[15; 16)
diff --git a/tests/data/parser/inline/0041_type_param_bounds.txt b/tests/data/parser/inline/0041_type_param_bounds.txt
index d607bd416..c03a80fa0 100644
--- a/tests/data/parser/inline/0041_type_param_bounds.txt
+++ b/tests/data/parser/inline/0041_type_param_bounds.txt
@@ -7,7 +7,8 @@ FILE@[0; 35)
7 TYPE_PARAM_LIST@[8; 33) 7 TYPE_PARAM_LIST@[8; 33)
8 L_ANGLE@[8; 9) 8 L_ANGLE@[8; 9)
9 TYPE_PARAM@[9; 32) 9 TYPE_PARAM@[9; 32)
10 IDENT@[9; 10) "T" 10 NAME@[9; 10)
11 IDENT@[9; 10) "T"
11 COLON@[10; 11) 12 COLON@[10; 11)
12 WHITESPACE@[11; 12) 13 WHITESPACE@[11; 12)
13 LIFETIME@[12; 14) "'a" 14 LIFETIME@[12; 14) "'a"
diff --git a/tests/data/parser/inline/0042_type_param_default.txt b/tests/data/parser/inline/0042_type_param_default.txt
index 9642a9084..24671ed6b 100644
--- a/tests/data/parser/inline/0042_type_param_default.txt
+++ b/tests/data/parser/inline/0042_type_param_default.txt
@@ -7,8 +7,9 @@ FILE@[0; 19)
7 TYPE_PARAM_LIST@[8; 17) 7 TYPE_PARAM_LIST@[8; 17)
8 L_ANGLE@[8; 9) 8 L_ANGLE@[8; 9)
9 TYPE_PARAM@[9; 16) 9 TYPE_PARAM@[9; 16)
10 IDENT@[9; 10) "T" 10 NAME@[9; 11)
11 WHITESPACE@[10; 11) 11 IDENT@[9; 10) "T"
12 WHITESPACE@[10; 11)
12 EQ@[11; 12) 13 EQ@[11; 12)
13 PATH_TYPE@[12; 16) 14 PATH_TYPE@[12; 16)
14 PATH@[12; 16) 15 PATH@[12; 16)
diff --git a/tests/data/parser/inline/0056_trait_item.txt b/tests/data/parser/inline/0056_trait_item.txt
index 87efc78e9..7ed8d4a55 100644
--- a/tests/data/parser/inline/0056_trait_item.txt
+++ b/tests/data/parser/inline/0056_trait_item.txt
@@ -7,7 +7,8 @@ FILE@[0; 42)
7 TYPE_PARAM_LIST@[7; 10) 7 TYPE_PARAM_LIST@[7; 10)
8 L_ANGLE@[7; 8) 8 L_ANGLE@[7; 8)
9 TYPE_PARAM@[8; 9) 9 TYPE_PARAM@[8; 9)
10 IDENT@[8; 9) "U" 10 NAME@[8; 9)
11 IDENT@[8; 9) "U"
11 R_ANGLE@[9; 10) 12 R_ANGLE@[9; 10)
12 COLON@[10; 11) 13 COLON@[10; 11)
13 PATH@[11; 17) 14 PATH@[11; 17)
diff --git a/tests/data/parser/inline/0058_type_arg.txt b/tests/data/parser/inline/0058_type_arg.txt
index af4bcedef..7a3a2aa10 100644
--- a/tests/data/parser/inline/0058_type_arg.txt
+++ b/tests/data/parser/inline/0058_type_arg.txt
@@ -26,8 +26,9 @@ FILE@[0; 35)
26 IDENT@[20; 23) "i32" 26 IDENT@[20; 23) "i32"
27 COMMA@[23; 24) 27 COMMA@[23; 24)
28 ASSOC_TYPE_ARG@[24; 33) 28 ASSOC_TYPE_ARG@[24; 33)
29 WHITESPACE@[24; 25) 29 NAME_REF@[24; 29)
30 IDENT@[25; 29) "Item" 30 WHITESPACE@[24; 25)
31 IDENT@[25; 29) "Item"
31 EQ@[29; 30) 32 EQ@[29; 30)
32 PATH_TYPE@[30; 33) 33 PATH_TYPE@[30; 33)
33 PATH@[30; 33) 34 PATH@[30; 33)
diff --git a/tests/data/parser/ok/0018_struct_type_params.txt b/tests/data/parser/ok/0018_struct_type_params.txt
index 8e1feab38..1d3b4a576 100644
--- a/tests/data/parser/ok/0018_struct_type_params.txt
+++ b/tests/data/parser/ok/0018_struct_type_params.txt
@@ -7,7 +7,8 @@ FILE@[0; 290)
7 TYPE_PARAM_LIST@[9; 12) 7 TYPE_PARAM_LIST@[9; 12)
8 L_ANGLE@[9; 10) 8 L_ANGLE@[9; 10)
9 TYPE_PARAM@[10; 11) 9 TYPE_PARAM@[10; 11)
10 IDENT@[10; 11) "T" 10 NAME@[10; 11)
11 IDENT@[10; 11) "T"
11 R_ANGLE@[11; 12) 12 R_ANGLE@[11; 12)
12 SEMI@[12; 13) 13 SEMI@[12; 13)
13 WHITESPACE@[13; 14) 14 WHITESPACE@[13; 14)
@@ -19,7 +20,8 @@ FILE@[0; 290)
19 TYPE_PARAM_LIST@[23; 26) 20 TYPE_PARAM_LIST@[23; 26)
20 L_ANGLE@[23; 24) 21 L_ANGLE@[23; 24)
21 TYPE_PARAM@[24; 25) 22 TYPE_PARAM@[24; 25)
22 IDENT@[24; 25) "T" 23 NAME@[24; 25)
24 IDENT@[24; 25) "T"
23 R_ANGLE@[25; 26) 25 R_ANGLE@[25; 26)
24 L_PAREN@[26; 27) 26 L_PAREN@[26; 27)
25 POS_FIELD@[27; 30) 27 POS_FIELD@[27; 30)
@@ -39,7 +41,8 @@ FILE@[0; 290)
39 TYPE_PARAM_LIST@[42; 46) 41 TYPE_PARAM_LIST@[42; 46)
40 L_ANGLE@[42; 43) 42 L_ANGLE@[42; 43)
41 TYPE_PARAM@[43; 44) 43 TYPE_PARAM@[43; 44)
42 IDENT@[43; 44) "T" 44 NAME@[43; 44)
45 IDENT@[43; 44) "T"
43 R_ANGLE@[44; 45) 46 R_ANGLE@[44; 45)
44 WHITESPACE@[45; 46) 47 WHITESPACE@[45; 46)
45 L_CURLY@[46; 47) 48 L_CURLY@[46; 47)
@@ -205,7 +208,8 @@ FILE@[0; 290)
205 TYPE_PARAM_LIST@[245; 248) 208 TYPE_PARAM_LIST@[245; 248)
206 L_ANGLE@[245; 246) 209 L_ANGLE@[245; 246)
207 TYPE_PARAM@[246; 247) 210 TYPE_PARAM@[246; 247)
208 IDENT@[246; 247) "T" 211 NAME@[246; 247)
212 IDENT@[246; 247) "T"
209 R_ANGLE@[247; 248) 213 R_ANGLE@[247; 248)
210 SEMI@[248; 249) 214 SEMI@[248; 249)
211 WHITESPACE@[249; 250) 215 WHITESPACE@[249; 250)
@@ -217,11 +221,13 @@ FILE@[0; 290)
217 TYPE_PARAM_LIST@[260; 266) 221 TYPE_PARAM_LIST@[260; 266)
218 L_ANGLE@[260; 261) 222 L_ANGLE@[260; 261)
219 TYPE_PARAM@[261; 262) 223 TYPE_PARAM@[261; 262)
220 IDENT@[261; 262) "T" 224 NAME@[261; 262)
225 IDENT@[261; 262) "T"
221 COMMA@[262; 263) 226 COMMA@[262; 263)
222 TYPE_PARAM@[263; 265) 227 TYPE_PARAM@[263; 265)
223 WHITESPACE@[263; 264) 228 NAME@[263; 265)
224 IDENT@[264; 265) "U" 229 WHITESPACE@[263; 264)
230 IDENT@[264; 265) "U"
225 R_ANGLE@[265; 266) 231 R_ANGLE@[265; 266)
226 SEMI@[266; 267) 232 SEMI@[266; 267)
227 WHITESPACE@[267; 268) 233 WHITESPACE@[267; 268)
@@ -236,12 +242,14 @@ FILE@[0; 290)
236 LIFETIME@[279; 281) "'a" 242 LIFETIME@[279; 281) "'a"
237 COMMA@[281; 282) 243 COMMA@[281; 282)
238 TYPE_PARAM@[282; 284) 244 TYPE_PARAM@[282; 284)
239 WHITESPACE@[282; 283) 245 NAME@[282; 284)
240 IDENT@[283; 284) "T" 246 WHITESPACE@[282; 283)
247 IDENT@[283; 284) "T"
241 COMMA@[284; 285) 248 COMMA@[284; 285)
242 TYPE_PARAM@[285; 287) 249 TYPE_PARAM@[285; 287)
243 WHITESPACE@[285; 286) 250 NAME@[285; 287)
244 IDENT@[286; 287) "U" 251 WHITESPACE@[285; 286)
252 IDENT@[286; 287) "U"
245 R_ANGLE@[287; 288) 253 R_ANGLE@[287; 288)
246 SEMI@[288; 289) 254 SEMI@[288; 289)
247 WHITESPACE@[289; 290) 255 WHITESPACE@[289; 290)
diff --git a/tests/data/parser/ok/0019_enums.txt b/tests/data/parser/ok/0019_enums.txt
index 09253dcea..86d29e650 100644
--- a/tests/data/parser/ok/0019_enums.txt
+++ b/tests/data/parser/ok/0019_enums.txt
@@ -17,7 +17,8 @@ FILE@[0; 182)
17 TYPE_PARAM_LIST@[20; 24) 17 TYPE_PARAM_LIST@[20; 24)
18 L_ANGLE@[20; 21) 18 L_ANGLE@[20; 21)
19 TYPE_PARAM@[21; 22) 19 TYPE_PARAM@[21; 22)
20 IDENT@[21; 22) "T" 20 NAME@[21; 22)
21 IDENT@[21; 22) "T"
21 R_ANGLE@[22; 23) 22 R_ANGLE@[22; 23)
22 WHITESPACE@[23; 24) 23 WHITESPACE@[23; 24)
23 L_CURLY@[24; 25) 24 L_CURLY@[24; 25)
diff --git a/tests/data/parser/ok/0020_type_param_bounds.txt b/tests/data/parser/ok/0020_type_param_bounds.txt
index 7132eec6e..9ff2df578 100644
--- a/tests/data/parser/ok/0020_type_param_bounds.txt
+++ b/tests/data/parser/ok/0020_type_param_bounds.txt
@@ -7,7 +7,8 @@ FILE@[0; 200)
7 TYPE_PARAM_LIST@[8; 11) 7 TYPE_PARAM_LIST@[8; 11)
8 L_ANGLE@[8; 9) 8 L_ANGLE@[8; 9)
9 TYPE_PARAM@[9; 10) 9 TYPE_PARAM@[9; 10)
10 IDENT@[9; 10) "T" 10 NAME@[9; 10)
11 IDENT@[9; 10) "T"
11 R_ANGLE@[10; 11) 12 R_ANGLE@[10; 11)
12 SEMI@[11; 12) 13 SEMI@[11; 12)
13 WHITESPACE@[12; 13) 14 WHITESPACE@[12; 13)
@@ -19,7 +20,8 @@ FILE@[0; 200)
19 TYPE_PARAM_LIST@[21; 25) 20 TYPE_PARAM_LIST@[21; 25)
20 L_ANGLE@[21; 22) 21 L_ANGLE@[21; 22)
21 TYPE_PARAM@[22; 24) 22 TYPE_PARAM@[22; 24)
22 IDENT@[22; 23) "T" 23 NAME@[22; 23)
24 IDENT@[22; 23) "T"
23 COLON@[23; 24) 25 COLON@[23; 24)
24 R_ANGLE@[24; 25) 26 R_ANGLE@[24; 25)
25 SEMI@[25; 26) 27 SEMI@[25; 26)
@@ -32,7 +34,8 @@ FILE@[0; 200)
32 TYPE_PARAM_LIST@[35; 42) 34 TYPE_PARAM_LIST@[35; 42)
33 L_ANGLE@[35; 36) 35 L_ANGLE@[35; 36)
34 TYPE_PARAM@[36; 41) 36 TYPE_PARAM@[36; 41)
35 IDENT@[36; 37) "T" 37 NAME@[36; 37)
38 IDENT@[36; 37) "T"
36 COLON@[37; 38) 39 COLON@[37; 38)
37 WHITESPACE@[38; 39) 40 WHITESPACE@[38; 39)
38 LIFETIME@[39; 41) "'a" 41 LIFETIME@[39; 41) "'a"
@@ -47,7 +50,8 @@ FILE@[0; 200)
47 TYPE_PARAM_LIST@[52; 62) 50 TYPE_PARAM_LIST@[52; 62)
48 L_ANGLE@[52; 53) 51 L_ANGLE@[52; 53)
49 TYPE_PARAM@[53; 61) 52 TYPE_PARAM@[53; 61)
50 IDENT@[53; 54) "T" 53 NAME@[53; 54)
54 IDENT@[53; 54) "T"
51 COLON@[54; 55) 55 COLON@[54; 55)
52 WHITESPACE@[55; 56) 56 WHITESPACE@[55; 56)
53 LIFETIME@[56; 58) "'a" 57 LIFETIME@[56; 58) "'a"
@@ -65,7 +69,8 @@ FILE@[0; 200)
65 TYPE_PARAM_LIST@[72; 85) 69 TYPE_PARAM_LIST@[72; 85)
66 L_ANGLE@[72; 73) 70 L_ANGLE@[72; 73)
67 TYPE_PARAM@[73; 84) 71 TYPE_PARAM@[73; 84)
68 IDENT@[73; 74) "T" 72 NAME@[73; 74)
73 IDENT@[73; 74) "T"
69 COLON@[74; 75) 74 COLON@[74; 75)
70 WHITESPACE@[75; 76) 75 WHITESPACE@[75; 76)
71 LIFETIME@[76; 78) "'a" 76 LIFETIME@[76; 78) "'a"
@@ -85,7 +90,8 @@ FILE@[0; 200)
85 TYPE_PARAM_LIST@[95; 115) 90 TYPE_PARAM_LIST@[95; 115)
86 L_ANGLE@[95; 96) 91 L_ANGLE@[95; 96)
87 TYPE_PARAM@[96; 114) 92 TYPE_PARAM@[96; 114)
88 IDENT@[96; 97) "T" 93 NAME@[96; 97)
94 IDENT@[96; 97) "T"
89 COLON@[97; 98) 95 COLON@[97; 98)
90 WHITESPACE@[98; 99) 96 WHITESPACE@[98; 99)
91 LIFETIME@[99; 101) "'a" 97 LIFETIME@[99; 101) "'a"
@@ -111,7 +117,8 @@ FILE@[0; 200)
111 TYPE_PARAM_LIST@[125; 142) 117 TYPE_PARAM_LIST@[125; 142)
112 L_ANGLE@[125; 126) 118 L_ANGLE@[125; 126)
113 TYPE_PARAM@[126; 141) 119 TYPE_PARAM@[126; 141)
114 IDENT@[126; 127) "T" 120 NAME@[126; 127)
121 IDENT@[126; 127) "T"
115 COLON@[127; 128) 122 COLON@[127; 128)
116 PATH@[128; 135) 123 PATH@[128; 135)
117 PATH_SEGMENT@[128; 135) 124 PATH_SEGMENT@[128; 135)
@@ -136,7 +143,8 @@ FILE@[0; 200)
136 TYPE_PARAM_LIST@[152; 179) 143 TYPE_PARAM_LIST@[152; 179)
137 L_ANGLE@[152; 153) 144 L_ANGLE@[152; 153)
138 TYPE_PARAM@[153; 178) 145 TYPE_PARAM@[153; 178)
139 IDENT@[153; 154) "T" 146 NAME@[153; 154)
147 IDENT@[153; 154) "T"
140 COLON@[154; 155) 148 COLON@[154; 155)
141 PATH@[155; 162) 149 PATH@[155; 162)
142 PATH_SEGMENT@[155; 162) 150 PATH_SEGMENT@[155; 162)
@@ -170,12 +178,14 @@ FILE@[0; 200)
170 TYPE_PARAM_LIST@[189; 198) 178 TYPE_PARAM_LIST@[189; 198)
171 L_ANGLE@[189; 190) 179 L_ANGLE@[189; 190)
172 TYPE_PARAM@[190; 192) 180 TYPE_PARAM@[190; 192)
173 IDENT@[190; 191) "T" 181 NAME@[190; 191)
182 IDENT@[190; 191) "T"
174 COLON@[191; 192) 183 COLON@[191; 192)
175 COMMA@[192; 193) 184 COMMA@[192; 193)
176 TYPE_PARAM@[193; 196) 185 TYPE_PARAM@[193; 196)
177 WHITESPACE@[193; 194) 186 NAME@[193; 195)
178 IDENT@[194; 195) "U" 187 WHITESPACE@[193; 194)
188 IDENT@[194; 195) "U"
179 COLON@[195; 196) 189 COLON@[195; 196)
180 COMMA@[196; 197) 190 COMMA@[196; 197)
181 R_ANGLE@[197; 198) 191 R_ANGLE@[197; 198)