]> git.lizzy.rs Git - rust.git/blob - crates/syntax/test_data/parser/ok/0051_parameter_attrs.rast
3fed1183825f941c2670e22408e33628be2e4303
[rust.git] / crates / syntax / test_data / parser / ok / 0051_parameter_attrs.rast
1 SOURCE_FILE@0..519
2   FN@0..37
3     FN_KW@0..2 "fn"
4     WHITESPACE@2..3 " "
5     NAME@3..5
6       IDENT@3..5 "g1"
7     PARAM_LIST@5..34
8       L_PAREN@5..6 "("
9       ATTR@6..14
10         POUND@6..7 "#"
11         L_BRACK@7..8 "["
12         PATH@8..13
13           PATH_SEGMENT@8..13
14             NAME_REF@8..13
15               IDENT@8..13 "attr1"
16         R_BRACK@13..14 "]"
17       WHITESPACE@14..15 " "
18       ATTR@15..23
19         POUND@15..16 "#"
20         L_BRACK@16..17 "["
21         PATH@17..22
22           PATH_SEGMENT@17..22
23             NAME_REF@17..22
24               IDENT@17..22 "attr2"
25         R_BRACK@22..23 "]"
26       WHITESPACE@23..24 " "
27       PARAM@24..33
28         IDENT_PAT@24..27
29           NAME@24..27
30             IDENT@24..27 "pat"
31         COLON@27..28 ":"
32         WHITESPACE@28..29 " "
33         PATH_TYPE@29..33
34           PATH@29..33
35             PATH_SEGMENT@29..33
36               NAME_REF@29..33
37                 IDENT@29..33 "Type"
38       R_PAREN@33..34 ")"
39     WHITESPACE@34..35 " "
40     BLOCK_EXPR@35..37
41       L_CURLY@35..36 "{"
42       R_CURLY@36..37 "}"
43   WHITESPACE@37..38 "\n"
44   FN@38..62
45     FN_KW@38..40 "fn"
46     WHITESPACE@40..41 " "
47     NAME@41..43
48       IDENT@41..43 "g2"
49     PARAM_LIST@43..59
50       L_PAREN@43..44 "("
51       ATTR@44..52
52         POUND@44..45 "#"
53         L_BRACK@45..46 "["
54         PATH@46..51
55           PATH_SEGMENT@46..51
56             NAME_REF@46..51
57               IDENT@46..51 "attr1"
58         R_BRACK@51..52 "]"
59       WHITESPACE@52..53 " "
60       PARAM@53..58
61         IDENT_PAT@53..54
62           NAME@53..54
63             IDENT@53..54 "x"
64         COLON@54..55 ":"
65         WHITESPACE@55..56 " "
66         PATH_TYPE@56..58
67           PATH@56..58
68             PATH_SEGMENT@56..58
69               NAME_REF@56..58
70                 IDENT@56..58 "u8"
71       R_PAREN@58..59 ")"
72     WHITESPACE@59..60 " "
73     BLOCK_EXPR@60..62
74       L_CURLY@60..61 "{"
75       R_CURLY@61..62 "}"
76   WHITESPACE@62..64 "\n\n"
77   EXTERN_BLOCK@64..128
78     ABI@64..74
79       EXTERN_KW@64..70 "extern"
80       WHITESPACE@70..71 " "
81       STRING@71..74 "\"C\""
82     WHITESPACE@74..75 " "
83     EXTERN_ITEM_LIST@75..128
84       L_CURLY@75..76 "{"
85       WHITESPACE@76..77 " "
86       FN@77..126
87         FN_KW@77..79 "fn"
88         WHITESPACE@79..80 " "
89         NAME@80..86
90           IDENT@80..86 "printf"
91         PARAM_LIST@86..118
92           L_PAREN@86..87 "("
93           PARAM@87..104
94             IDENT_PAT@87..93
95               NAME@87..93
96                 IDENT@87..93 "format"
97             COLON@93..94 ":"
98             WHITESPACE@94..95 " "
99             PTR_TYPE@95..104
100               STAR@95..96 "*"
101               CONST_KW@96..101 "const"
102               WHITESPACE@101..102 " "
103               PATH_TYPE@102..104
104                 PATH@102..104
105                   PATH_SEGMENT@102..104
106                     NAME_REF@102..104
107                       IDENT@102..104 "i8"
108           COMMA@104..105 ","
109           WHITESPACE@105..106 " "
110           PARAM@106..117
111             ATTR@106..113
112               POUND@106..107 "#"
113               L_BRACK@107..108 "["
114               PATH@108..112
115                 PATH_SEGMENT@108..112
116                   NAME_REF@108..112
117                     IDENT@108..112 "attr"
118               R_BRACK@112..113 "]"
119             WHITESPACE@113..114 " "
120             DOT3@114..117 "..."
121           R_PAREN@117..118 ")"
122         WHITESPACE@118..119 " "
123         RET_TYPE@119..125
124           THIN_ARROW@119..121 "->"
125           WHITESPACE@121..122 " "
126           PATH_TYPE@122..125
127             PATH@122..125
128               PATH_SEGMENT@122..125
129                 NAME_REF@122..125
130                   IDENT@122..125 "i32"
131         SEMICOLON@125..126 ";"
132       WHITESPACE@126..127 " "
133       R_CURLY@127..128 "}"
134   WHITESPACE@128..130 "\n\n"
135   FN@130..172
136     FN_KW@130..132 "fn"
137     WHITESPACE@132..133 " "
138     NAME@133..136
139       IDENT@133..136 "foo"
140     GENERIC_PARAM_LIST@136..168
141       L_ANGLE@136..137 "<"
142       TYPE_PARAM@137..167
143         NAME@137..138
144           IDENT@137..138 "F"
145         COLON@138..139 ":"
146         WHITESPACE@139..140 " "
147         TYPE_BOUND_LIST@140..167
148           TYPE_BOUND@140..167
149             PATH_TYPE@140..167
150               PATH@140..167
151                 PATH_SEGMENT@140..167
152                   NAME_REF@140..145
153                     IDENT@140..145 "FnMut"
154                   PARAM_LIST@145..167
155                     L_PAREN@145..146 "("
156                     PARAM@146..166
157                       ATTR@146..153
158                         POUND@146..147 "#"
159                         L_BRACK@147..148 "["
160                         PATH@148..152
161                           PATH_SEGMENT@148..152
162                             NAME_REF@148..152
163                               IDENT@148..152 "attr"
164                         R_BRACK@152..153 "]"
165                       WHITESPACE@153..154 " "
166                       REF_TYPE@154..166
167                         AMP@154..155 "&"
168                         MUT_KW@155..158 "mut"
169                         WHITESPACE@158..159 " "
170                         PATH_TYPE@159..166
171                           PATH@159..166
172                             PATH_SEGMENT@159..166
173                               NAME_REF@159..162
174                                 IDENT@159..162 "Foo"
175                               GENERIC_ARG_LIST@162..166
176                                 L_ANGLE@162..163 "<"
177                                 LIFETIME_ARG@163..165
178                                   LIFETIME@163..165
179                                     LIFETIME_IDENT@163..165 "\'a"
180                                 R_ANGLE@165..166 ">"
181                     R_PAREN@166..167 ")"
182       R_ANGLE@167..168 ">"
183     PARAM_LIST@168..170
184       L_PAREN@168..169 "("
185       R_PAREN@169..170 ")"
186     BLOCK_EXPR@170..172
187       L_CURLY@170..171 "{"
188       R_CURLY@171..172 "}"
189   WHITESPACE@172..174 "\n\n"
190   TRAIT@174..236
191     TRAIT_KW@174..179 "trait"
192     WHITESPACE@179..180 " "
193     NAME@180..183
194       IDENT@180..183 "Foo"
195     WHITESPACE@183..184 " "
196     ASSOC_ITEM_LIST@184..236
197       L_CURLY@184..185 "{"
198       WHITESPACE@185..190 "\n    "
199       FN@190..234
200         FN_KW@190..192 "fn"
201         WHITESPACE@192..193 " "
202         NAME@193..196
203           IDENT@193..196 "bar"
204         PARAM_LIST@196..233
205           L_PAREN@196..197 "("
206           ATTR@197..204
207             POUND@197..198 "#"
208             L_BRACK@198..199 "["
209             PATH@199..203
210               PATH_SEGMENT@199..203
211                 NAME_REF@199..203
212                   IDENT@199..203 "attr"
213             R_BRACK@203..204 "]"
214           WHITESPACE@204..205 " "
215           PARAM@205..211
216             WILDCARD_PAT@205..206
217               UNDERSCORE@205..206 "_"
218             COLON@206..207 ":"
219             WHITESPACE@207..208 " "
220             PATH_TYPE@208..211
221               PATH@208..211
222                 PATH_SEGMENT@208..211
223                   NAME_REF@208..211
224                     IDENT@208..211 "u64"
225           COMMA@211..212 ","
226           WHITESPACE@212..213 " "
227           PARAM@213..232
228             ATTR@213..221
229               POUND@213..214 "#"
230               WHITESPACE@214..215 " "
231               L_BRACK@215..216 "["
232               PATH@216..220
233                 PATH_SEGMENT@216..220
234                   NAME_REF@216..220
235                     IDENT@216..220 "attr"
236               R_BRACK@220..221 "]"
237             WHITESPACE@221..222 " "
238             IDENT_PAT@222..227
239               MUT_KW@222..225 "mut"
240               WHITESPACE@225..226 " "
241               NAME@226..227
242                 IDENT@226..227 "x"
243             COLON@227..228 ":"
244             WHITESPACE@228..229 " "
245             PATH_TYPE@229..232
246               PATH@229..232
247                 PATH_SEGMENT@229..232
248                   NAME_REF@229..232
249                     IDENT@229..232 "i32"
250           R_PAREN@232..233 ")"
251         SEMICOLON@233..234 ";"
252       WHITESPACE@234..235 "\n"
253       R_CURLY@235..236 "}"
254   WHITESPACE@236..238 "\n\n"
255   IMPL@238..519
256     IMPL_KW@238..242 "impl"
257     WHITESPACE@242..243 " "
258     PATH_TYPE@243..244
259       PATH@243..244
260         PATH_SEGMENT@243..244
261           NAME_REF@243..244
262             IDENT@243..244 "S"
263     WHITESPACE@244..245 " "
264     ASSOC_ITEM_LIST@245..519
265       L_CURLY@245..246 "{"
266       WHITESPACE@246..252 "\n     "
267       FN@252..277
268         FN_KW@252..254 "fn"
269         WHITESPACE@254..255 " "
270         NAME@255..256
271           IDENT@255..256 "f"
272         PARAM_LIST@256..274
273           L_PAREN@256..257 "("
274           SELF_PARAM@257..273
275             ATTR@257..268
276               POUND@257..258 "#"
277               L_BRACK@258..259 "["
278               PATH@259..267
279                 PATH_SEGMENT@259..267
280                   NAME_REF@259..267
281                     IDENT@259..267 "must_use"
282               R_BRACK@267..268 "]"
283             WHITESPACE@268..269 " "
284             SELF_KW@269..273 "self"
285           R_PAREN@273..274 ")"
286         WHITESPACE@274..275 " "
287         BLOCK_EXPR@275..277
288           L_CURLY@275..276 "{"
289           R_CURLY@276..277 "}"
290       WHITESPACE@277..283 "\n     "
291       FN@283..305
292         FN_KW@283..285 "fn"
293         WHITESPACE@285..286 " "
294         NAME@286..288
295           IDENT@286..288 "g1"
296         PARAM_LIST@288..302
297           L_PAREN@288..289 "("
298           SELF_PARAM@289..301
299             ATTR@289..296
300               POUND@289..290 "#"
301               L_BRACK@290..291 "["
302               PATH@291..295
303                 PATH_SEGMENT@291..295
304                   NAME_REF@291..295
305                     IDENT@291..295 "attr"
306               R_BRACK@295..296 "]"
307             WHITESPACE@296..297 " "
308             SELF_KW@297..301 "self"
309           R_PAREN@301..302 ")"
310         WHITESPACE@302..303 " "
311         BLOCK_EXPR@303..305
312           L_CURLY@303..304 "{"
313           R_CURLY@304..305 "}"
314       WHITESPACE@305..311 "\n     "
315       FN@311..334
316         FN_KW@311..313 "fn"
317         WHITESPACE@313..314 " "
318         NAME@314..316
319           IDENT@314..316 "g2"
320         PARAM_LIST@316..331
321           L_PAREN@316..317 "("
322           SELF_PARAM@317..330
323             ATTR@317..324
324               POUND@317..318 "#"
325               L_BRACK@318..319 "["
326               PATH@319..323
327                 PATH_SEGMENT@319..323
328                   NAME_REF@319..323
329                     IDENT@319..323 "attr"
330               R_BRACK@323..324 "]"
331             WHITESPACE@324..325 " "
332             AMP@325..326 "&"
333             SELF_KW@326..330 "self"
334           R_PAREN@330..331 ")"
335         WHITESPACE@331..332 " "
336         BLOCK_EXPR@332..334
337           L_CURLY@332..333 "{"
338           R_CURLY@333..334 "}"
339       WHITESPACE@334..340 "\n     "
340       FN@340..371
341         FN_KW@340..342 "fn"
342         WHITESPACE@342..343 " "
343         NAME@343..345
344           IDENT@343..345 "g3"
345         GENERIC_PARAM_LIST@345..349
346           L_ANGLE@345..346 "<"
347           LIFETIME_PARAM@346..348
348             LIFETIME@346..348
349               LIFETIME_IDENT@346..348 "\'a"
350           R_ANGLE@348..349 ">"
351         PARAM_LIST@349..368
352           L_PAREN@349..350 "("
353           SELF_PARAM@350..367
354             ATTR@350..357
355               POUND@350..351 "#"
356               L_BRACK@351..352 "["
357               PATH@352..356
358                 PATH_SEGMENT@352..356
359                   NAME_REF@352..356
360                     IDENT@352..356 "attr"
361               R_BRACK@356..357 "]"
362             WHITESPACE@357..358 " "
363             AMP@358..359 "&"
364             MUT_KW@359..362 "mut"
365             WHITESPACE@362..363 " "
366             SELF_KW@363..367 "self"
367           R_PAREN@367..368 ")"
368         WHITESPACE@368..369 " "
369         BLOCK_EXPR@369..371
370           L_CURLY@369..370 "{"
371           R_CURLY@370..371 "}"
372       WHITESPACE@371..377 "\n     "
373       FN@377..407
374         FN_KW@377..379 "fn"
375         WHITESPACE@379..380 " "
376         NAME@380..382
377           IDENT@380..382 "g4"
378         GENERIC_PARAM_LIST@382..386
379           L_ANGLE@382..383 "<"
380           LIFETIME_PARAM@383..385
381             LIFETIME@383..385
382               LIFETIME_IDENT@383..385 "\'a"
383           R_ANGLE@385..386 ">"
384         PARAM_LIST@386..404
385           L_PAREN@386..387 "("
386           SELF_PARAM@387..403
387             ATTR@387..394
388               POUND@387..388 "#"
389               L_BRACK@388..389 "["
390               PATH@389..393
391                 PATH_SEGMENT@389..393
392                   NAME_REF@389..393
393                     IDENT@389..393 "attr"
394               R_BRACK@393..394 "]"
395             WHITESPACE@394..395 " "
396             AMP@395..396 "&"
397             LIFETIME@396..398
398               LIFETIME_IDENT@396..398 "\'a"
399             WHITESPACE@398..399 " "
400             SELF_KW@399..403 "self"
401           R_PAREN@403..404 ")"
402         WHITESPACE@404..405 " "
403         BLOCK_EXPR@405..407
404           L_CURLY@405..406 "{"
405           R_CURLY@406..407 "}"
406       WHITESPACE@407..413 "\n     "
407       FN@413..447
408         FN_KW@413..415 "fn"
409         WHITESPACE@415..416 " "
410         NAME@416..418
411           IDENT@416..418 "g5"
412         GENERIC_PARAM_LIST@418..422
413           L_ANGLE@418..419 "<"
414           LIFETIME_PARAM@419..421
415             LIFETIME@419..421
416               LIFETIME_IDENT@419..421 "\'a"
417           R_ANGLE@421..422 ">"
418         PARAM_LIST@422..444
419           L_PAREN@422..423 "("
420           SELF_PARAM@423..443
421             ATTR@423..430
422               POUND@423..424 "#"
423               L_BRACK@424..425 "["
424               PATH@425..429
425                 PATH_SEGMENT@425..429
426                   NAME_REF@425..429
427                     IDENT@425..429 "attr"
428               R_BRACK@429..430 "]"
429             WHITESPACE@430..431 " "
430             AMP@431..432 "&"
431             LIFETIME@432..434
432               LIFETIME_IDENT@432..434 "\'a"
433             WHITESPACE@434..435 " "
434             MUT_KW@435..438 "mut"
435             WHITESPACE@438..439 " "
436             SELF_KW@439..443 "self"
437           R_PAREN@443..444 ")"
438         WHITESPACE@444..445 " "
439         BLOCK_EXPR@445..447
440           L_CURLY@445..446 "{"
441           R_CURLY@446..447 "}"
442       WHITESPACE@447..453 "\n     "
443       FN@453..480
444         FN_KW@453..455 "fn"
445         WHITESPACE@455..456 " "
446         NAME@456..457
447           IDENT@456..457 "c"
448         PARAM_LIST@457..477
449           L_PAREN@457..458 "("
450           SELF_PARAM@458..476
451             ATTR@458..465
452               POUND@458..459 "#"
453               L_BRACK@459..460 "["
454               PATH@460..464
455                 PATH_SEGMENT@460..464
456                   NAME_REF@460..464
457                     IDENT@460..464 "attr"
458               R_BRACK@464..465 "]"
459             WHITESPACE@465..466 " "
460             SELF_KW@466..470 "self"
461             COLON@470..471 ":"
462             WHITESPACE@471..472 " "
463             PATH_TYPE@472..476
464               PATH@472..476
465                 PATH_SEGMENT@472..476
466                   NAME_REF@472..476
467                     IDENT@472..476 "Self"
468           R_PAREN@476..477 ")"
469         WHITESPACE@477..478 " "
470         BLOCK_EXPR@478..480
471           L_CURLY@478..479 "{"
472           R_CURLY@479..480 "}"
473       WHITESPACE@480..486 "\n     "
474       FN@486..517
475         FN_KW@486..488 "fn"
476         WHITESPACE@488..489 " "
477         NAME@489..490
478           IDENT@489..490 "d"
479         PARAM_LIST@490..514
480           L_PAREN@490..491 "("
481           SELF_PARAM@491..513
482             ATTR@491..498
483               POUND@491..492 "#"
484               L_BRACK@492..493 "["
485               PATH@493..497
486                 PATH_SEGMENT@493..497
487                   NAME_REF@493..497
488                     IDENT@493..497 "attr"
489               R_BRACK@497..498 "]"
490             WHITESPACE@498..499 " "
491             SELF_KW@499..503 "self"
492             COLON@503..504 ":"
493             WHITESPACE@504..505 " "
494             PATH_TYPE@505..513
495               PATH@505..513
496                 PATH_SEGMENT@505..513
497                   NAME_REF@505..507
498                     IDENT@505..507 "Rc"
499                   GENERIC_ARG_LIST@507..513
500                     L_ANGLE@507..508 "<"
501                     TYPE_ARG@508..512
502                       PATH_TYPE@508..512
503                         PATH@508..512
504                           PATH_SEGMENT@508..512
505                             NAME_REF@508..512
506                               IDENT@508..512 "Self"
507                     R_ANGLE@512..513 ">"
508           R_PAREN@513..514 ")"
509         WHITESPACE@514..515 " "
510         BLOCK_EXPR@515..517
511           L_CURLY@515..516 "{"
512           R_CURLY@516..517 "}"
513       WHITESPACE@517..518 "\n"
514       R_CURLY@518..519 "}"