]> git.lizzy.rs Git - rust.git/blob - crates/parser/test_data/parser/ok/0067_where_for_pred.rast
Merge #11481
[rust.git] / crates / parser / test_data / parser / ok / 0067_where_for_pred.rast
1 SOURCE_FILE@0..374
2   FN@0..55
3     FN_KW@0..2 "fn"
4     WHITESPACE@2..3 " "
5     NAME@3..12
6       IDENT@3..12 "for_trait"
7     GENERIC_PARAM_LIST@12..15
8       L_ANGLE@12..13 "<"
9       TYPE_PARAM@13..14
10         NAME@13..14
11           IDENT@13..14 "F"
12       R_ANGLE@14..15 ">"
13     PARAM_LIST@15..17
14       L_PAREN@15..16 "("
15       R_PAREN@16..17 ")"
16     WHITESPACE@17..18 "\n"
17     WHERE_CLAUSE@18..51
18       WHERE_KW@18..23 "where"
19       WHITESPACE@23..28 "\n    "
20       WHERE_PRED@28..50
21         FOR_KW@28..31 "for"
22         GENERIC_PARAM_LIST@31..35
23           L_ANGLE@31..32 "<"
24           LIFETIME_PARAM@32..34
25             LIFETIME@32..34
26               LIFETIME_IDENT@32..34 "'a"
27           R_ANGLE@34..35 ">"
28         WHITESPACE@35..36 " "
29         PATH_TYPE@36..37
30           PATH@36..37
31             PATH_SEGMENT@36..37
32               NAME_REF@36..37
33                 IDENT@36..37 "F"
34         COLON@37..38 ":"
35         WHITESPACE@38..39 " "
36         TYPE_BOUND_LIST@39..50
37           TYPE_BOUND@39..50
38             PATH_TYPE@39..50
39               PATH@39..50
40                 PATH_SEGMENT@39..50
41                   NAME_REF@39..41
42                     IDENT@39..41 "Fn"
43                   PARAM_LIST@41..50
44                     L_PAREN@41..42 "("
45                     PARAM@42..49
46                       REF_TYPE@42..49
47                         AMP@42..43 "&"
48                         LIFETIME@43..45
49                           LIFETIME_IDENT@43..45 "'a"
50                         WHITESPACE@45..46 " "
51                         PATH_TYPE@46..49
52                           PATH@46..49
53                             PATH_SEGMENT@46..49
54                               NAME_REF@46..49
55                                 IDENT@46..49 "str"
56                     R_PAREN@49..50 ")"
57       COMMA@50..51 ","
58     WHITESPACE@51..52 "\n"
59     BLOCK_EXPR@52..55
60       STMT_LIST@52..55
61         L_CURLY@52..53 "{"
62         WHITESPACE@53..54 "\n"
63         R_CURLY@54..55 "}"
64   WHITESPACE@55..56 "\n"
65   FN@56..107
66     FN_KW@56..58 "fn"
67     WHITESPACE@58..59 " "
68     NAME@59..66
69       IDENT@59..66 "for_ref"
70     GENERIC_PARAM_LIST@66..69
71       L_ANGLE@66..67 "<"
72       TYPE_PARAM@67..68
73         NAME@67..68
74           IDENT@67..68 "F"
75       R_ANGLE@68..69 ">"
76     PARAM_LIST@69..71
77       L_PAREN@69..70 "("
78       R_PAREN@70..71 ")"
79     WHITESPACE@71..72 "\n"
80     WHERE_CLAUSE@72..103
81       WHERE_KW@72..77 "where"
82       WHITESPACE@77..82 "\n    "
83       WHERE_PRED@82..102
84         FOR_KW@82..85 "for"
85         GENERIC_PARAM_LIST@85..89
86           L_ANGLE@85..86 "<"
87           LIFETIME_PARAM@86..88
88             LIFETIME@86..88
89               LIFETIME_IDENT@86..88 "'a"
90           R_ANGLE@88..89 ">"
91         WHITESPACE@89..90 " "
92         REF_TYPE@90..95
93           AMP@90..91 "&"
94           LIFETIME@91..93
95             LIFETIME_IDENT@91..93 "'a"
96           WHITESPACE@93..94 " "
97           PATH_TYPE@94..95
98             PATH@94..95
99               PATH_SEGMENT@94..95
100                 NAME_REF@94..95
101                   IDENT@94..95 "F"
102         COLON@95..96 ":"
103         WHITESPACE@96..97 " "
104         TYPE_BOUND_LIST@97..102
105           TYPE_BOUND@97..102
106             PATH_TYPE@97..102
107               PATH@97..102
108                 PATH_SEGMENT@97..102
109                   NAME_REF@97..102
110                     IDENT@97..102 "Debug"
111       COMMA@102..103 ","
112     WHITESPACE@103..104 "\n"
113     BLOCK_EXPR@104..107
114       STMT_LIST@104..107
115         L_CURLY@104..105 "{"
116         WHITESPACE@105..106 "\n"
117         R_CURLY@106..107 "}"
118   WHITESPACE@107..108 "\n"
119   FN@108..170
120     FN_KW@108..110 "fn"
121     WHITESPACE@110..111 " "
122     NAME@111..121
123       IDENT@111..121 "for_parens"
124     GENERIC_PARAM_LIST@121..124
125       L_ANGLE@121..122 "<"
126       TYPE_PARAM@122..123
127         NAME@122..123
128           IDENT@122..123 "F"
129       R_ANGLE@123..124 ">"
130     PARAM_LIST@124..126
131       L_PAREN@124..125 "("
132       R_PAREN@125..126 ")"
133     WHITESPACE@126..127 "\n"
134     WHERE_CLAUSE@127..166
135       WHERE_KW@127..132 "where"
136       WHITESPACE@132..137 "\n    "
137       WHERE_PRED@137..165
138         FOR_KW@137..140 "for"
139         GENERIC_PARAM_LIST@140..144
140           L_ANGLE@140..141 "<"
141           LIFETIME_PARAM@141..143
142             LIFETIME@141..143
143               LIFETIME_IDENT@141..143 "'a"
144           R_ANGLE@143..144 ">"
145         WHITESPACE@144..145 " "
146         PAREN_TYPE@145..152
147           L_PAREN@145..146 "("
148           REF_TYPE@146..151
149             AMP@146..147 "&"
150             LIFETIME@147..149
151               LIFETIME_IDENT@147..149 "'a"
152             WHITESPACE@149..150 " "
153             PATH_TYPE@150..151
154               PATH@150..151
155                 PATH_SEGMENT@150..151
156                   NAME_REF@150..151
157                     IDENT@150..151 "F"
158           R_PAREN@151..152 ")"
159         COLON@152..153 ":"
160         WHITESPACE@153..154 " "
161         TYPE_BOUND_LIST@154..165
162           TYPE_BOUND@154..165
163             PATH_TYPE@154..165
164               PATH@154..165
165                 PATH_SEGMENT@154..165
166                   NAME_REF@154..156
167                     IDENT@154..156 "Fn"
168                   PARAM_LIST@156..165
169                     L_PAREN@156..157 "("
170                     PARAM@157..164
171                       REF_TYPE@157..164
172                         AMP@157..158 "&"
173                         LIFETIME@158..160
174                           LIFETIME_IDENT@158..160 "'a"
175                         WHITESPACE@160..161 " "
176                         PATH_TYPE@161..164
177                           PATH@161..164
178                             PATH_SEGMENT@161..164
179                               NAME_REF@161..164
180                                 IDENT@161..164 "str"
181                     R_PAREN@164..165 ")"
182       COMMA@165..166 ","
183     WHITESPACE@166..167 "\n"
184     BLOCK_EXPR@167..170
185       STMT_LIST@167..170
186         L_CURLY@167..168 "{"
187         WHITESPACE@168..169 "\n"
188         R_CURLY@169..170 "}"
189   WHITESPACE@170..171 "\n"
190   FN@171..223
191     FN_KW@171..173 "fn"
192     WHITESPACE@173..174 " "
193     NAME@174..183
194       IDENT@174..183 "for_slice"
195     GENERIC_PARAM_LIST@183..186
196       L_ANGLE@183..184 "<"
197       TYPE_PARAM@184..185
198         NAME@184..185
199           IDENT@184..185 "F"
200       R_ANGLE@185..186 ">"
201     PARAM_LIST@186..188
202       L_PAREN@186..187 "("
203       R_PAREN@187..188 ")"
204     WHITESPACE@188..189 "\n"
205     WHERE_CLAUSE@189..219
206       WHERE_KW@189..194 "where"
207       WHITESPACE@194..199 "\n    "
208       WHERE_PRED@199..218
209         FOR_KW@199..202 "for"
210         GENERIC_PARAM_LIST@202..206
211           L_ANGLE@202..203 "<"
212           LIFETIME_PARAM@203..205
213             LIFETIME@203..205
214               LIFETIME_IDENT@203..205 "'a"
215           R_ANGLE@205..206 ">"
216         WHITESPACE@206..207 " "
217         SLICE_TYPE@207..214
218           L_BRACK@207..208 "["
219           REF_TYPE@208..213
220             AMP@208..209 "&"
221             LIFETIME@209..211
222               LIFETIME_IDENT@209..211 "'a"
223             WHITESPACE@211..212 " "
224             PATH_TYPE@212..213
225               PATH@212..213
226                 PATH_SEGMENT@212..213
227                   NAME_REF@212..213
228                     IDENT@212..213 "F"
229           R_BRACK@213..214 "]"
230         COLON@214..215 ":"
231         WHITESPACE@215..216 " "
232         TYPE_BOUND_LIST@216..218
233           TYPE_BOUND@216..218
234             PATH_TYPE@216..218
235               PATH@216..218
236                 PATH_SEGMENT@216..218
237                   NAME_REF@216..218
238                     IDENT@216..218 "Eq"
239       COMMA@218..219 ","
240     WHITESPACE@219..220 "\n"
241     BLOCK_EXPR@220..223
242       STMT_LIST@220..223
243         L_CURLY@220..221 "{"
244         WHITESPACE@221..222 "\n"
245         R_CURLY@222..223 "}"
246   WHITESPACE@223..224 "\n"
247   FN@224..300
248     FN_KW@224..226 "fn"
249     WHITESPACE@226..227 " "
250     NAME@227..236
251       IDENT@227..236 "for_qpath"
252     GENERIC_PARAM_LIST@236..239
253       L_ANGLE@236..237 "<"
254       TYPE_PARAM@237..238
255         NAME@237..238
256           IDENT@237..238 "T"
257       R_ANGLE@238..239 ">"
258     PARAM_LIST@239..247
259       L_PAREN@239..240 "("
260       PARAM@240..246
261         IDENT_PAT@240..242
262           NAME@240..242
263             IDENT@240..242 "_t"
264         COLON@242..243 ":"
265         WHITESPACE@243..244 " "
266         REF_TYPE@244..246
267           AMP@244..245 "&"
268           PATH_TYPE@245..246
269             PATH@245..246
270               PATH_SEGMENT@245..246
271                 NAME_REF@245..246
272                   IDENT@245..246 "T"
273       R_PAREN@246..247 ")"
274     WHITESPACE@247..248 "\n"
275     WHERE_CLAUSE@248..296
276       WHERE_KW@248..253 "where"
277       WHITESPACE@253..258 "\n    "
278       WHERE_PRED@258..295
279         FOR_KW@258..261 "for"
280         GENERIC_PARAM_LIST@261..265
281           L_ANGLE@261..262 "<"
282           LIFETIME_PARAM@262..264
283             LIFETIME@262..264
284               LIFETIME_IDENT@262..264 "'a"
285           R_ANGLE@264..265 ">"
286         WHITESPACE@265..266 " "
287         PATH_TYPE@266..285
288           PATH@266..285
289             PATH@266..280
290               PATH_SEGMENT@266..280
291                 L_ANGLE@266..267 "<"
292                 REF_TYPE@267..272
293                   AMP@267..268 "&"
294                   LIFETIME@268..270
295                     LIFETIME_IDENT@268..270 "'a"
296                   WHITESPACE@270..271 " "
297                   PATH_TYPE@271..272
298                     PATH@271..272
299                       PATH_SEGMENT@271..272
300                         NAME_REF@271..272
301                           IDENT@271..272 "T"
302                 WHITESPACE@272..273 " "
303                 AS_KW@273..275 "as"
304                 WHITESPACE@275..276 " "
305                 PATH_TYPE@276..279
306                   PATH@276..279
307                     PATH_SEGMENT@276..279
308                       NAME_REF@276..279
309                         IDENT@276..279 "Baz"
310                 R_ANGLE@279..280 ">"
311             COLON2@280..282 "::"
312             PATH_SEGMENT@282..285
313               NAME_REF@282..285
314                 IDENT@282..285 "Foo"
315         COLON@285..286 ":"
316         WHITESPACE@286..287 " "
317         TYPE_BOUND_LIST@287..295
318           TYPE_BOUND@287..295
319             PATH_TYPE@287..295
320               PATH@287..295
321                 PATH_SEGMENT@287..295
322                   NAME_REF@287..295
323                     IDENT@287..295 "Iterator"
324       COMMA@295..296 ","
325     WHITESPACE@296..297 "\n"
326     BLOCK_EXPR@297..300
327       STMT_LIST@297..300
328         L_CURLY@297..298 "{"
329         WHITESPACE@298..299 "\n"
330         R_CURLY@299..300 "}"
331   WHITESPACE@300..301 "\n"
332   FN@301..373
333     FN_KW@301..303 "fn"
334     WHITESPACE@303..304 " "
335     NAME@304..314
336       IDENT@304..314 "for_for_fn"
337     GENERIC_PARAM_LIST@314..317
338       L_ANGLE@314..315 "<"
339       TYPE_PARAM@315..316
340         NAME@315..316
341           IDENT@315..316 "T"
342       R_ANGLE@316..317 ">"
343     PARAM_LIST@317..319
344       L_PAREN@317..318 "("
345       R_PAREN@318..319 ")"
346     WHITESPACE@319..320 "\n"
347     WHERE_CLAUSE@320..369
348       WHERE_KW@320..325 "where"
349       WHITESPACE@325..330 "\n    "
350       WHERE_PRED@330..368
351         FOR_KW@330..333 "for"
352         GENERIC_PARAM_LIST@333..337
353           L_ANGLE@333..334 "<"
354           LIFETIME_PARAM@334..336
355             LIFETIME@334..336
356               LIFETIME_IDENT@334..336 "'a"
357           R_ANGLE@336..337 ">"
358         WHITESPACE@337..338 " "
359         FOR_TYPE@338..362
360           FOR_KW@338..341 "for"
361           GENERIC_PARAM_LIST@341..345
362             L_ANGLE@341..342 "<"
363             LIFETIME_PARAM@342..344
364               LIFETIME@342..344
365                 LIFETIME_IDENT@342..344 "'b"
366             R_ANGLE@344..345 ">"
367           WHITESPACE@345..346 " "
368           FN_PTR_TYPE@346..362
369             FN_KW@346..348 "fn"
370             PARAM_LIST@348..362
371               L_PAREN@348..349 "("
372               PARAM@349..354
373                 REF_TYPE@349..354
374                   AMP@349..350 "&"
375                   LIFETIME@350..352
376                     LIFETIME_IDENT@350..352 "'a"
377                   WHITESPACE@352..353 " "
378                   PATH_TYPE@353..354
379                     PATH@353..354
380                       PATH_SEGMENT@353..354
381                         NAME_REF@353..354
382                           IDENT@353..354 "T"
383               COMMA@354..355 ","
384               WHITESPACE@355..356 " "
385               PARAM@356..361
386                 REF_TYPE@356..361
387                   AMP@356..357 "&"
388                   LIFETIME@357..359
389                     LIFETIME_IDENT@357..359 "'b"
390                   WHITESPACE@359..360 " "
391                   PATH_TYPE@360..361
392                     PATH@360..361
393                       PATH_SEGMENT@360..361
394                         NAME_REF@360..361
395                           IDENT@360..361 "T"
396               R_PAREN@361..362 ")"
397         COLON@362..363 ":"
398         WHITESPACE@363..364 " "
399         TYPE_BOUND_LIST@364..368
400           TYPE_BOUND@364..368
401             PATH_TYPE@364..368
402               PATH@364..368
403                 PATH_SEGMENT@364..368
404                   NAME_REF@364..368
405                     IDENT@364..368 "Copy"
406       COMMA@368..369 ","
407     WHITESPACE@369..370 "\n"
408     BLOCK_EXPR@370..373
409       STMT_LIST@370..373
410         L_CURLY@370..371 "{"
411         WHITESPACE@371..372 "\n"
412         R_CURLY@372..373 "}"
413   WHITESPACE@373..374 "\n"