aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2018-12-21 10:04:00 +0000
committerbors[bot] <bors[bot]@users.noreply.github.com>2018-12-21 10:04:00 +0000
commit463e5af3f2ff54b74e4aeb73e75047c00b6339be (patch)
tree00b56f7f72ceee1a6ebc11ff3a4cfae54782eaf7
parent4f7ec0170353e61c148909d2716c915578392a7b (diff)
parent9beee92500bfb5953717a67c18217722ea82be49 (diff)
Merge #306
306: Finish weird exprs r=DJMcNab a=DJMcNab Fix #290. Note that I'm not certain my use of `p.nth(1) == Ident` is entirely consistent with `libsyntax` - in the original, [`is_union_item`](https://github.com/rust-lang/rust/blob/9622f9dc4745eb59fd229477f453ae83e8044db9/src/libsyntax/parse/parser.rs#L4593-L4596) uses `t.is_ident() && !t.is_reserved_ident()`, whereas we effectively only do `is_ident`. However, I cannot find the definition of `is_reserved_ident` (even searching the rust repository only gives uses, no definitions), so this will have to do unless someone else can find it :|. Co-authored-by: DJMcNab <[email protected]>
-rw-r--r--crates/ra_syntax/src/grammar/items.rs2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.rs154
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.txt2244
3 files changed, 2399 insertions, 1 deletions
diff --git a/crates/ra_syntax/src/grammar/items.rs b/crates/ra_syntax/src/grammar/items.rs
index b646dd070..aa5fe0777 100644
--- a/crates/ra_syntax/src/grammar/items.rs
+++ b/crates/ra_syntax/src/grammar/items.rs
@@ -202,7 +202,7 @@ fn items_without_modifiers(p: &mut Parser) -> Option<SyntaxKind> {
202 } 202 }
203 STRUCT_DEF 203 STRUCT_DEF
204 } 204 }
205 IDENT if p.at_contextual_kw("union") => { 205 IDENT if p.at_contextual_kw("union") && p.nth(1) == IDENT => {
206 // test union_items 206 // test union_items
207 // union Foo {} 207 // union Foo {}
208 // union Foo { 208 // union Foo {
diff --git a/crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.rs b/crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.rs
new file mode 100644
index 000000000..8c1323163
--- /dev/null
+++ b/crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.rs
@@ -0,0 +1,154 @@
1//! Adapted from a `rustc` test, which can be found at
2//! https://github.com/rust-lang/rust/blob/6d34ec18c7d7e574553f6347ecf08e1e1c45c13d/src/test/run-pass/weird-exprs.rs.
3//!
4//! Reported to rust-analyzer in https://github.com/rust-analyzer/rust-analyzer/issues/290
5
6#![allow(non_camel_case_types)]
7#![allow(dead_code)]
8#![allow(unreachable_code)]
9#![allow(unused_parens)]
10
11#![recursion_limit = "128"]
12
13use std::cell::Cell;
14use std::mem::swap;
15
16// Just a grab bag of stuff that you wouldn't want to actually write.
17
18fn strange() -> bool { let _x: bool = return true; }
19
20fn funny() {
21 fn f(_x: ()) { }
22 f(return);
23}
24
25fn what() {
26 fn the(x: &Cell<bool>) {
27 return while !x.get() { x.set(true); };
28 }
29 let i = &Cell::new(false);
30 let dont = {||the(i)};
31 dont();
32 assert!((i.get()));
33}
34
35fn zombiejesus() {
36 loop {
37 while (return) {
38 if (return) {
39 match (return) {
40 1 => {
41 if (return) {
42 return
43 } else {
44 return
45 }
46 }
47 _ => { return }
48 };
49 } else if (return) {
50 return;
51 }
52 }
53 if (return) { break; }
54 }
55}
56
57fn notsure() {
58 let mut _x: isize;
59 let mut _y = (_x = 0) == (_x = 0);
60 let mut _z = (_x = 0) < (_x = 0);
61 let _a = (_x += 0) == (_x = 0);
62 let _b = swap(&mut _y, &mut _z) == swap(&mut _y, &mut _z);
63}
64
65fn canttouchthis() -> usize {
66 fn p() -> bool { true }
67 let _a = (assert!((true)) == (assert!(p())));
68 let _c = (assert!((p())) == ());
69 let _b: bool = (println!("{}", 0) == (return 0));
70}
71
72fn angrydome() {
73 loop { if break { } }
74 let mut i = 0;
75 loop { i += 1; if i == 1 { match (continue) { 1 => { }, _ => panic!("wat") } }
76 break; }
77}
78
79fn evil_lincoln() { let _evil = println!("lincoln"); }
80
81fn dots() {
82 assert_eq!(String::from(".................................................."),
83 format!("{:?}", .. .. .. .. .. .. .. .. .. .. .. .. ..
84 .. .. .. .. .. .. .. .. .. .. .. ..));
85}
86
87fn u8(u8: u8) {
88 if u8 != 0u8 {
89 assert_eq!(8u8, {
90 macro_rules! u8 {
91 (u8) => {
92 mod u8 {
93 pub fn u8<'u8: 'u8 + 'u8>(u8: &'u8 u8) -> &'u8 u8 {
94 "u8";
95 u8
96 }
97 }
98 };
99 }
100
101 u8!(u8);
102 let &u8: &u8 = u8::u8(&8u8);
103 crate::u8(0u8);
104 u8
105 });
106 }
107}
108
109fn fishy() {
110 assert_eq!(String::from("><>"),
111 String::<>::from::<>("><>").chars::<>().rev::<>().collect::<String>());
112}
113
114fn union() {
115 union union<'union> { union: &'union union<'union>, }
116}
117
118fn special_characters() {
119 let val = !((|(..):(_,_),__@_|__)((&*"\\",'🤔')/**/,{})=={&[..=..][..];})//
120 ;
121 assert!(!val);
122}
123
124fn punch_card() -> impl std::fmt::Debug {
125 ..=..=.. .. .. .. .. .. .. .. .. .. .. ..=.. ..
126 ..=.. ..=.. .. .. .. .. .. .. .. .. ..=..=..=..
127 ..=.. ..=.. ..=.. ..=.. .. ..=..=.. .. ..=.. ..
128 ..=..=.. .. ..=.. ..=.. ..=.. .. .. .. ..=.. ..
129 ..=.. ..=.. ..=.. ..=.. .. ..=.. .. .. ..=.. ..
130 ..=.. ..=.. ..=.. ..=.. .. .. ..=.. .. ..=.. ..
131 ..=.. ..=.. .. ..=..=.. ..=..=.. .. .. ..=.. ..
132}
133
134fn ktulhu() {
135 ;;;();;;;;;;;;()
136}
137
138pub fn main() {
139 strange();
140 funny();
141 what();
142 zombiejesus();
143 notsure();
144 canttouchthis();
145 angrydome();
146 evil_lincoln();
147 dots();
148 u8(8u8);
149 fishy();
150 union();
151 special_characters();
152 punch_card();
153 ktulhu();
154}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.txt b/crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.txt
new file mode 100644
index 000000000..20932a837
--- /dev/null
+++ b/crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.txt
@@ -0,0 +1,2244 @@
1SOURCE_FILE@[0; 3813)
2 COMMENT@[0; 55)
3 WHITESPACE@[55; 56)
4 COMMENT@[56; 173)
5 WHITESPACE@[173; 174)
6 COMMENT@[174; 178)
7 WHITESPACE@[178; 179)
8 COMMENT@[179; 269)
9 WHITESPACE@[269; 271)
10 ATTR@[271; 302)
11 POUND@[271; 272)
12 EXCL@[272; 273)
13 TOKEN_TREE@[273; 302)
14 L_BRACK@[273; 274)
15 IDENT@[274; 279) "allow"
16 TOKEN_TREE@[279; 301)
17 L_PAREN@[279; 280)
18 IDENT@[280; 300) "non_camel_case_types"
19 R_PAREN@[300; 301)
20 R_BRACK@[301; 302)
21 WHITESPACE@[302; 303)
22 ATTR@[303; 323)
23 POUND@[303; 304)
24 EXCL@[304; 305)
25 TOKEN_TREE@[305; 323)
26 L_BRACK@[305; 306)
27 IDENT@[306; 311) "allow"
28 TOKEN_TREE@[311; 322)
29 L_PAREN@[311; 312)
30 IDENT@[312; 321) "dead_code"
31 R_PAREN@[321; 322)
32 R_BRACK@[322; 323)
33 WHITESPACE@[323; 324)
34 ATTR@[324; 351)
35 POUND@[324; 325)
36 EXCL@[325; 326)
37 TOKEN_TREE@[326; 351)
38 L_BRACK@[326; 327)
39 IDENT@[327; 332) "allow"
40 TOKEN_TREE@[332; 350)
41 L_PAREN@[332; 333)
42 IDENT@[333; 349) "unreachable_code"
43 R_PAREN@[349; 350)
44 R_BRACK@[350; 351)
45 WHITESPACE@[351; 352)
46 ATTR@[352; 376)
47 POUND@[352; 353)
48 EXCL@[353; 354)
49 TOKEN_TREE@[354; 376)
50 L_BRACK@[354; 355)
51 IDENT@[355; 360) "allow"
52 TOKEN_TREE@[360; 375)
53 L_PAREN@[360; 361)
54 IDENT@[361; 374) "unused_parens"
55 R_PAREN@[374; 375)
56 R_BRACK@[375; 376)
57 WHITESPACE@[376; 378)
58 ATTR@[378; 405)
59 POUND@[378; 379)
60 EXCL@[379; 380)
61 TOKEN_TREE@[380; 405)
62 L_BRACK@[380; 381)
63 IDENT@[381; 396) "recursion_limit"
64 WHITESPACE@[396; 397)
65 EQ@[397; 398)
66 WHITESPACE@[398; 399)
67 STRING@[399; 404)
68 R_BRACK@[404; 405)
69 WHITESPACE@[405; 407)
70 USE_ITEM@[407; 427)
71 USE_KW@[407; 410)
72 WHITESPACE@[410; 411)
73 USE_TREE@[411; 426)
74 PATH@[411; 426)
75 PATH@[411; 420)
76 PATH@[411; 414)
77 PATH_SEGMENT@[411; 414)
78 NAME_REF@[411; 414)
79 IDENT@[411; 414) "std"
80 COLONCOLON@[414; 416)
81 PATH_SEGMENT@[416; 420)
82 NAME_REF@[416; 420)
83 IDENT@[416; 420) "cell"
84 COLONCOLON@[420; 422)
85 PATH_SEGMENT@[422; 426)
86 NAME_REF@[422; 426)
87 IDENT@[422; 426) "Cell"
88 SEMI@[426; 427)
89 WHITESPACE@[427; 428)
90 USE_ITEM@[428; 447)
91 USE_KW@[428; 431)
92 WHITESPACE@[431; 432)
93 USE_TREE@[432; 446)
94 PATH@[432; 446)
95 PATH@[432; 440)
96 PATH@[432; 435)
97 PATH_SEGMENT@[432; 435)
98 NAME_REF@[432; 435)
99 IDENT@[432; 435) "std"
100 COLONCOLON@[435; 437)
101 PATH_SEGMENT@[437; 440)
102 NAME_REF@[437; 440)
103 IDENT@[437; 440) "mem"
104 COLONCOLON@[440; 442)
105 PATH_SEGMENT@[442; 446)
106 NAME_REF@[442; 446)
107 IDENT@[442; 446) "swap"
108 SEMI@[446; 447)
109 WHITESPACE@[447; 449)
110 COMMENT@[449; 518)
111 WHITESPACE@[518; 520)
112 FN_DEF@[520; 572)
113 FN_KW@[520; 522)
114 WHITESPACE@[522; 523)
115 NAME@[523; 530)
116 IDENT@[523; 530) "strange"
117 PARAM_LIST@[530; 532)
118 L_PAREN@[530; 531)
119 R_PAREN@[531; 532)
120 WHITESPACE@[532; 533)
121 RET_TYPE@[533; 540)
122 THIN_ARROW@[533; 535)
123 WHITESPACE@[535; 536)
124 PATH_TYPE@[536; 540)
125 PATH@[536; 540)
126 PATH_SEGMENT@[536; 540)
127 NAME_REF@[536; 540)
128 IDENT@[536; 540) "bool"
129 WHITESPACE@[540; 541)
130 BLOCK@[541; 572)
131 L_CURLY@[541; 542)
132 WHITESPACE@[542; 543)
133 LET_STMT@[543; 570)
134 LET_KW@[543; 546)
135 WHITESPACE@[546; 547)
136 BIND_PAT@[547; 549)
137 NAME@[547; 549)
138 IDENT@[547; 549) "_x"
139 COLON@[549; 550)
140 WHITESPACE@[550; 551)
141 PATH_TYPE@[551; 555)
142 PATH@[551; 555)
143 PATH_SEGMENT@[551; 555)
144 NAME_REF@[551; 555)
145 IDENT@[551; 555) "bool"
146 WHITESPACE@[555; 556)
147 EQ@[556; 557)
148 WHITESPACE@[557; 558)
149 RETURN_EXPR@[558; 569)
150 RETURN_KW@[558; 564)
151 WHITESPACE@[564; 565)
152 LITERAL@[565; 569)
153 TRUE_KW@[565; 569)
154 SEMI@[569; 570)
155 WHITESPACE@[570; 571)
156 R_CURLY@[571; 572)
157 WHITESPACE@[572; 574)
158 FN_DEF@[574; 624)
159 FN_KW@[574; 576)
160 WHITESPACE@[576; 577)
161 NAME@[577; 582)
162 IDENT@[577; 582) "funny"
163 PARAM_LIST@[582; 584)
164 L_PAREN@[582; 583)
165 R_PAREN@[583; 584)
166 WHITESPACE@[584; 585)
167 BLOCK@[585; 624)
168 L_CURLY@[585; 586)
169 WHITESPACE@[586; 591)
170 FN_DEF@[591; 607)
171 FN_KW@[591; 593)
172 WHITESPACE@[593; 594)
173 NAME@[594; 595)
174 IDENT@[594; 595) "f"
175 PARAM_LIST@[595; 603)
176 L_PAREN@[595; 596)
177 PARAM@[596; 602)
178 BIND_PAT@[596; 598)
179 NAME@[596; 598)
180 IDENT@[596; 598) "_x"
181 COLON@[598; 599)
182 WHITESPACE@[599; 600)
183 TUPLE_TYPE@[600; 602)
184 L_PAREN@[600; 601)
185 R_PAREN@[601; 602)
186 R_PAREN@[602; 603)
187 WHITESPACE@[603; 604)
188 BLOCK@[604; 607)
189 L_CURLY@[604; 605)
190 WHITESPACE@[605; 606)
191 R_CURLY@[606; 607)
192 WHITESPACE@[607; 612)
193 EXPR_STMT@[612; 622)
194 CALL_EXPR@[612; 621)
195 PATH_EXPR@[612; 613)
196 PATH@[612; 613)
197 PATH_SEGMENT@[612; 613)
198 NAME_REF@[612; 613)
199 IDENT@[612; 613) "f"
200 ARG_LIST@[613; 621)
201 L_PAREN@[613; 614)
202 RETURN_EXPR@[614; 620)
203 RETURN_KW@[614; 620)
204 R_PAREN@[620; 621)
205 SEMI@[621; 622)
206 WHITESPACE@[622; 623)
207 R_CURLY@[623; 624)
208 WHITESPACE@[624; 626)
209 FN_DEF@[626; 816)
210 FN_KW@[626; 628)
211 WHITESPACE@[628; 629)
212 NAME@[629; 633)
213 IDENT@[629; 633) "what"
214 PARAM_LIST@[633; 635)
215 L_PAREN@[633; 634)
216 R_PAREN@[634; 635)
217 WHITESPACE@[635; 636)
218 BLOCK@[636; 816)
219 L_CURLY@[636; 637)
220 WHITESPACE@[637; 642)
221 FN_DEF@[642; 720)
222 FN_KW@[642; 644)
223 WHITESPACE@[644; 645)
224 NAME@[645; 648)
225 IDENT@[645; 648) "the"
226 PARAM_LIST@[648; 664)
227 L_PAREN@[648; 649)
228 PARAM@[649; 663)
229 BIND_PAT@[649; 650)
230 NAME@[649; 650)
231 IDENT@[649; 650) "x"
232 COLON@[650; 651)
233 WHITESPACE@[651; 652)
234 REFERENCE_TYPE@[652; 663)
235 AMP@[652; 653)
236 PATH_TYPE@[653; 663)
237 PATH@[653; 663)
238 PATH_SEGMENT@[653; 663)
239 NAME_REF@[653; 657)
240 IDENT@[653; 657) "Cell"
241 TYPE_ARG_LIST@[657; 663)
242 L_ANGLE@[657; 658)
243 TYPE_ARG@[658; 662)
244 PATH_TYPE@[658; 662)
245 PATH@[658; 662)
246 PATH_SEGMENT@[658; 662)
247 NAME_REF@[658; 662)
248 IDENT@[658; 662) "bool"
249 R_ANGLE@[662; 663)
250 R_PAREN@[663; 664)
251 WHITESPACE@[664; 665)
252 BLOCK@[665; 720)
253 L_CURLY@[665; 666)
254 WHITESPACE@[666; 675)
255 EXPR_STMT@[675; 714)
256 RETURN_EXPR@[675; 713)
257 RETURN_KW@[675; 681)
258 WHITESPACE@[681; 682)
259 WHILE_EXPR@[682; 713)
260 WHILE_KW@[682; 687)
261 WHITESPACE@[687; 688)
262 CONDITION@[688; 696)
263 PREFIX_EXPR@[688; 696)
264 EXCL@[688; 689)
265 METHOD_CALL_EXPR@[689; 696)
266 PATH_EXPR@[689; 690)
267 PATH@[689; 690)
268 PATH_SEGMENT@[689; 690)
269 NAME_REF@[689; 690)
270 IDENT@[689; 690) "x"
271 DOT@[690; 691)
272 NAME_REF@[691; 694)
273 IDENT@[691; 694) "get"
274 ARG_LIST@[694; 696)
275 L_PAREN@[694; 695)
276 R_PAREN@[695; 696)
277 WHITESPACE@[696; 697)
278 BLOCK@[697; 713)
279 L_CURLY@[697; 698)
280 WHITESPACE@[698; 699)
281 EXPR_STMT@[699; 711)
282 METHOD_CALL_EXPR@[699; 710)
283 PATH_EXPR@[699; 700)
284 PATH@[699; 700)
285 PATH_SEGMENT@[699; 700)
286 NAME_REF@[699; 700)
287 IDENT@[699; 700) "x"
288 DOT@[700; 701)
289 NAME_REF@[701; 704)
290 IDENT@[701; 704) "set"
291 ARG_LIST@[704; 710)
292 L_PAREN@[704; 705)
293 LITERAL@[705; 709)
294 TRUE_KW@[705; 709)
295 R_PAREN@[709; 710)
296 SEMI@[710; 711)
297 WHITESPACE@[711; 712)
298 R_CURLY@[712; 713)
299 SEMI@[713; 714)
300 WHITESPACE@[714; 719)
301 R_CURLY@[719; 720)
302 WHITESPACE@[720; 725)
303 LET_STMT@[725; 751)
304 LET_KW@[725; 728)
305 WHITESPACE@[728; 729)
306 BIND_PAT@[729; 730)
307 NAME@[729; 730)
308 IDENT@[729; 730) "i"
309 WHITESPACE@[730; 731)
310 EQ@[731; 732)
311 WHITESPACE@[732; 733)
312 REF_EXPR@[733; 750)
313 AMP@[733; 734)
314 CALL_EXPR@[734; 750)
315 PATH_EXPR@[734; 743)
316 PATH@[734; 743)
317 PATH@[734; 738)
318 PATH_SEGMENT@[734; 738)
319 NAME_REF@[734; 738)
320 IDENT@[734; 738) "Cell"
321 COLONCOLON@[738; 740)
322 PATH_SEGMENT@[740; 743)
323 NAME_REF@[740; 743)
324 IDENT@[740; 743) "new"
325 ARG_LIST@[743; 750)
326 L_PAREN@[743; 744)
327 LITERAL@[744; 749)
328 FALSE_KW@[744; 749)
329 R_PAREN@[749; 750)
330 SEMI@[750; 751)
331 WHITESPACE@[751; 756)
332 LET_STMT@[756; 778)
333 LET_KW@[756; 759)
334 WHITESPACE@[759; 760)
335 BIND_PAT@[760; 764)
336 NAME@[760; 764)
337 IDENT@[760; 764) "dont"
338 WHITESPACE@[764; 765)
339 EQ@[765; 766)
340 WHITESPACE@[766; 767)
341 BLOCK_EXPR@[767; 777)
342 BLOCK@[767; 777)
343 L_CURLY@[767; 768)
344 LAMBDA_EXPR@[768; 776)
345 PARAM_LIST@[768; 770)
346 PIPE@[768; 769)
347 PIPE@[769; 770)
348 CALL_EXPR@[770; 776)
349 PATH_EXPR@[770; 773)
350 PATH@[770; 773)
351 PATH_SEGMENT@[770; 773)
352 NAME_REF@[770; 773)
353 IDENT@[770; 773) "the"
354 ARG_LIST@[773; 776)
355 L_PAREN@[773; 774)
356 PATH_EXPR@[774; 775)
357 PATH@[774; 775)
358 PATH_SEGMENT@[774; 775)
359 NAME_REF@[774; 775)
360 IDENT@[774; 775) "i"
361 R_PAREN@[775; 776)
362 R_CURLY@[776; 777)
363 SEMI@[777; 778)
364 WHITESPACE@[778; 783)
365 EXPR_STMT@[783; 790)
366 CALL_EXPR@[783; 789)
367 PATH_EXPR@[783; 787)
368 PATH@[783; 787)
369 PATH_SEGMENT@[783; 787)
370 NAME_REF@[783; 787)
371 IDENT@[783; 787) "dont"
372 ARG_LIST@[787; 789)
373 L_PAREN@[787; 788)
374 R_PAREN@[788; 789)
375 SEMI@[789; 790)
376 WHITESPACE@[790; 795)
377 EXPR_STMT@[795; 814)
378 MACRO_CALL@[795; 813)
379 PATH@[795; 801)
380 PATH_SEGMENT@[795; 801)
381 NAME_REF@[795; 801)
382 IDENT@[795; 801) "assert"
383 EXCL@[801; 802)
384 TOKEN_TREE@[802; 813)
385 L_PAREN@[802; 803)
386 TOKEN_TREE@[803; 812)
387 L_PAREN@[803; 804)
388 IDENT@[804; 805) "i"
389 DOT@[805; 806)
390 IDENT@[806; 809) "get"
391 TOKEN_TREE@[809; 811)
392 L_PAREN@[809; 810)
393 R_PAREN@[810; 811)
394 R_PAREN@[811; 812)
395 R_PAREN@[812; 813)
396 SEMI@[813; 814)
397 WHITESPACE@[814; 815)
398 R_CURLY@[815; 816)
399 WHITESPACE@[816; 818)
400 FN_DEF@[818; 1322)
401 FN_KW@[818; 820)
402 WHITESPACE@[820; 821)
403 NAME@[821; 832)
404 IDENT@[821; 832) "zombiejesus"
405 PARAM_LIST@[832; 834)
406 L_PAREN@[832; 833)
407 R_PAREN@[833; 834)
408 WHITESPACE@[834; 835)
409 BLOCK@[835; 1322)
410 L_CURLY@[835; 836)
411 WHITESPACE@[836; 841)
412 LOOP_EXPR@[841; 1320)
413 LOOP_KW@[841; 845)
414 WHITESPACE@[845; 846)
415 BLOCK@[846; 1320)
416 L_CURLY@[846; 847)
417 WHITESPACE@[847; 856)
418 EXPR_STMT@[856; 1283)
419 WHILE_EXPR@[856; 1283)
420 WHILE_KW@[856; 861)
421 WHITESPACE@[861; 862)
422 CONDITION@[862; 870)
423 PAREN_EXPR@[862; 870)
424 L_PAREN@[862; 863)
425 RETURN_EXPR@[863; 869)
426 RETURN_KW@[863; 869)
427 R_PAREN@[869; 870)
428 WHITESPACE@[870; 871)
429 BLOCK@[871; 1283)
430 L_CURLY@[871; 872)
431 WHITESPACE@[872; 885)
432 IF_EXPR@[885; 1273)
433 IF_KW@[885; 887)
434 WHITESPACE@[887; 888)
435 CONDITION@[888; 896)
436 PAREN_EXPR@[888; 896)
437 L_PAREN@[888; 889)
438 RETURN_EXPR@[889; 895)
439 RETURN_KW@[889; 895)
440 R_PAREN@[895; 896)
441 WHITESPACE@[896; 897)
442 BLOCK@[897; 1216)
443 L_CURLY@[897; 898)
444 WHITESPACE@[898; 915)
445 EXPR_STMT@[915; 1202)
446 MATCH_EXPR@[915; 1201)
447 MATCH_KW@[915; 920)
448 WHITESPACE@[920; 921)
449 PAREN_EXPR@[921; 929)
450 L_PAREN@[921; 922)
451 RETURN_EXPR@[922; 928)
452 RETURN_KW@[922; 928)
453 R_PAREN@[928; 929)
454 WHITESPACE@[929; 930)
455 MATCH_ARM_LIST@[930; 1201)
456 L_CURLY@[930; 931)
457 WHITESPACE@[931; 952)
458 MATCH_ARM@[952; 1147)
459 LITERAL@[952; 953)
460 INT_NUMBER@[952; 953) "1"
461 WHITESPACE@[953; 954)
462 FAT_ARROW@[954; 956)
463 WHITESPACE@[956; 957)
464 BLOCK_EXPR@[957; 1147)
465 BLOCK@[957; 1147)
466 L_CURLY@[957; 958)
467 WHITESPACE@[958; 983)
468 IF_EXPR@[983; 1125)
469 IF_KW@[983; 985)
470 WHITESPACE@[985; 986)
471 CONDITION@[986; 994)
472 PAREN_EXPR@[986; 994)
473 L_PAREN@[986; 987)
474 RETURN_EXPR@[987; 993)
475 RETURN_KW@[987; 993)
476 R_PAREN@[993; 994)
477 WHITESPACE@[994; 995)
478 BLOCK@[995; 1057)
479 L_CURLY@[995; 996)
480 WHITESPACE@[996; 1025)
481 RETURN_EXPR@[1025; 1031)
482 RETURN_KW@[1025; 1031)
483 WHITESPACE@[1031; 1056)
484 R_CURLY@[1056; 1057)
485 WHITESPACE@[1057; 1058)
486 ELSE_KW@[1058; 1062)
487 WHITESPACE@[1062; 1063)
488 BLOCK@[1063; 1125)
489 L_CURLY@[1063; 1064)
490 WHITESPACE@[1064; 1093)
491 RETURN_EXPR@[1093; 1099)
492 RETURN_KW@[1093; 1099)
493 WHITESPACE@[1099; 1124)
494 R_CURLY@[1124; 1125)
495 WHITESPACE@[1125; 1146)
496 R_CURLY@[1146; 1147)
497 WHITESPACE@[1147; 1168)
498 MATCH_ARM@[1168; 1183)
499 PLACEHOLDER_PAT@[1168; 1169)
500 UNDERSCORE@[1168; 1169)
501 WHITESPACE@[1169; 1170)
502 FAT_ARROW@[1170; 1172)
503 WHITESPACE@[1172; 1173)
504 BLOCK_EXPR@[1173; 1183)
505 BLOCK@[1173; 1183)
506 L_CURLY@[1173; 1174)
507 WHITESPACE@[1174; 1175)
508 RETURN_EXPR@[1175; 1181)
509 RETURN_KW@[1175; 1181)
510 WHITESPACE@[1181; 1182)
511 R_CURLY@[1182; 1183)
512 WHITESPACE@[1183; 1200)
513 R_CURLY@[1200; 1201)
514 SEMI@[1201; 1202)
515 WHITESPACE@[1202; 1215)
516 R_CURLY@[1215; 1216)
517 WHITESPACE@[1216; 1217)
518 ELSE_KW@[1217; 1221)
519 WHITESPACE@[1221; 1222)
520 IF_EXPR@[1222; 1273)
521 IF_KW@[1222; 1224)
522 WHITESPACE@[1224; 1225)
523 CONDITION@[1225; 1233)
524 PAREN_EXPR@[1225; 1233)
525 L_PAREN@[1225; 1226)
526 RETURN_EXPR@[1226; 1232)
527 RETURN_KW@[1226; 1232)
528 R_PAREN@[1232; 1233)
529 WHITESPACE@[1233; 1234)
530 BLOCK@[1234; 1273)
531 L_CURLY@[1234; 1235)
532 WHITESPACE@[1235; 1252)
533 EXPR_STMT@[1252; 1259)
534 RETURN_EXPR@[1252; 1258)
535 RETURN_KW@[1252; 1258)
536 SEMI@[1258; 1259)
537 WHITESPACE@[1259; 1272)
538 R_CURLY@[1272; 1273)
539 WHITESPACE@[1273; 1282)
540 R_CURLY@[1282; 1283)
541 WHITESPACE@[1283; 1292)
542 IF_EXPR@[1292; 1314)
543 IF_KW@[1292; 1294)
544 WHITESPACE@[1294; 1295)
545 CONDITION@[1295; 1303)
546 PAREN_EXPR@[1295; 1303)
547 L_PAREN@[1295; 1296)
548 RETURN_EXPR@[1296; 1302)
549 RETURN_KW@[1296; 1302)
550 R_PAREN@[1302; 1303)
551 WHITESPACE@[1303; 1304)
552 BLOCK@[1304; 1314)
553 L_CURLY@[1304; 1305)
554 WHITESPACE@[1305; 1306)
555 EXPR_STMT@[1306; 1312)
556 BREAK_EXPR@[1306; 1311)
557 BREAK_KW@[1306; 1311)
558 SEMI@[1311; 1312)
559 WHITESPACE@[1312; 1313)
560 R_CURLY@[1313; 1314)
561 WHITESPACE@[1314; 1319)
562 R_CURLY@[1319; 1320)
563 WHITESPACE@[1320; 1321)
564 R_CURLY@[1321; 1322)
565 WHITESPACE@[1322; 1324)
566 FN_DEF@[1324; 1539)
567 FN_KW@[1324; 1326)
568 WHITESPACE@[1326; 1327)
569 NAME@[1327; 1334)
570 IDENT@[1327; 1334) "notsure"
571 PARAM_LIST@[1334; 1336)
572 L_PAREN@[1334; 1335)
573 R_PAREN@[1335; 1336)
574 WHITESPACE@[1336; 1337)
575 BLOCK@[1337; 1539)
576 L_CURLY@[1337; 1338)
577 WHITESPACE@[1338; 1343)
578 LET_STMT@[1343; 1361)
579 LET_KW@[1343; 1346)
580 WHITESPACE@[1346; 1347)
581 BIND_PAT@[1347; 1353)
582 MUT_KW@[1347; 1350)
583 WHITESPACE@[1350; 1351)
584 NAME@[1351; 1353)
585 IDENT@[1351; 1353) "_x"
586 COLON@[1353; 1354)
587 WHITESPACE@[1354; 1355)
588 PATH_TYPE@[1355; 1360)
589 PATH@[1355; 1360)
590 PATH_SEGMENT@[1355; 1360)
591 NAME_REF@[1355; 1360)
592 IDENT@[1355; 1360) "isize"
593 SEMI@[1360; 1361)
594 WHITESPACE@[1361; 1366)
595 LET_STMT@[1366; 1400)
596 LET_KW@[1366; 1369)
597 WHITESPACE@[1369; 1370)
598 BIND_PAT@[1370; 1376)
599 MUT_KW@[1370; 1373)
600 WHITESPACE@[1373; 1374)
601 NAME@[1374; 1376)
602 IDENT@[1374; 1376) "_y"
603 WHITESPACE@[1376; 1377)
604 EQ@[1377; 1378)
605 WHITESPACE@[1378; 1379)
606 BIN_EXPR@[1379; 1399)
607 PAREN_EXPR@[1379; 1387)
608 L_PAREN@[1379; 1380)
609 BIN_EXPR@[1380; 1386)
610 PATH_EXPR@[1380; 1382)
611 PATH@[1380; 1382)
612 PATH_SEGMENT@[1380; 1382)
613 NAME_REF@[1380; 1382)
614 IDENT@[1380; 1382) "_x"
615 WHITESPACE@[1382; 1383)
616 EQ@[1383; 1384)
617 WHITESPACE@[1384; 1385)
618 LITERAL@[1385; 1386)
619 INT_NUMBER@[1385; 1386) "0"
620 R_PAREN@[1386; 1387)
621 WHITESPACE@[1387; 1388)
622 EQEQ@[1388; 1390)
623 WHITESPACE@[1390; 1391)
624 PAREN_EXPR@[1391; 1399)
625 L_PAREN@[1391; 1392)
626 BIN_EXPR@[1392; 1398)
627 PATH_EXPR@[1392; 1394)
628 PATH@[1392; 1394)
629 PATH_SEGMENT@[1392; 1394)
630 NAME_REF@[1392; 1394)
631 IDENT@[1392; 1394) "_x"
632 WHITESPACE@[1394; 1395)
633 EQ@[1395; 1396)
634 WHITESPACE@[1396; 1397)
635 LITERAL@[1397; 1398)
636 INT_NUMBER@[1397; 1398) "0"
637 R_PAREN@[1398; 1399)
638 SEMI@[1399; 1400)
639 WHITESPACE@[1400; 1405)
640 LET_STMT@[1405; 1438)
641 LET_KW@[1405; 1408)
642 WHITESPACE@[1408; 1409)
643 BIND_PAT@[1409; 1415)
644 MUT_KW@[1409; 1412)
645 WHITESPACE@[1412; 1413)
646 NAME@[1413; 1415)
647 IDENT@[1413; 1415) "_z"
648 WHITESPACE@[1415; 1416)
649 EQ@[1416; 1417)
650 WHITESPACE@[1417; 1418)
651 BIN_EXPR@[1418; 1437)
652 PAREN_EXPR@[1418; 1426)
653 L_PAREN@[1418; 1419)
654 BIN_EXPR@[1419; 1425)
655 PATH_EXPR@[1419; 1421)
656 PATH@[1419; 1421)
657 PATH_SEGMENT@[1419; 1421)
658 NAME_REF@[1419; 1421)
659 IDENT@[1419; 1421) "_x"
660 WHITESPACE@[1421; 1422)
661 EQ@[1422; 1423)
662 WHITESPACE@[1423; 1424)
663 LITERAL@[1424; 1425)
664 INT_NUMBER@[1424; 1425) "0"
665 R_PAREN@[1425; 1426)
666 WHITESPACE@[1426; 1427)
667 L_ANGLE@[1427; 1428)
668 WHITESPACE@[1428; 1429)
669 PAREN_EXPR@[1429; 1437)
670 L_PAREN@[1429; 1430)
671 BIN_EXPR@[1430; 1436)
672 PATH_EXPR@[1430; 1432)
673 PATH@[1430; 1432)
674 PATH_SEGMENT@[1430; 1432)
675 NAME_REF@[1430; 1432)
676 IDENT@[1430; 1432) "_x"
677 WHITESPACE@[1432; 1433)
678 EQ@[1433; 1434)
679 WHITESPACE@[1434; 1435)
680 LITERAL@[1435; 1436)
681 INT_NUMBER@[1435; 1436) "0"
682 R_PAREN@[1436; 1437)
683 SEMI@[1437; 1438)
684 WHITESPACE@[1438; 1443)
685 LET_STMT@[1443; 1474)
686 LET_KW@[1443; 1446)
687 WHITESPACE@[1446; 1447)
688 BIND_PAT@[1447; 1449)
689 NAME@[1447; 1449)
690 IDENT@[1447; 1449) "_a"
691 WHITESPACE@[1449; 1450)
692 EQ@[1450; 1451)
693 WHITESPACE@[1451; 1452)
694 BIN_EXPR@[1452; 1473)
695 PAREN_EXPR@[1452; 1461)
696 L_PAREN@[1452; 1453)
697 BIN_EXPR@[1453; 1460)
698 PATH_EXPR@[1453; 1455)
699 PATH@[1453; 1455)
700 PATH_SEGMENT@[1453; 1455)
701 NAME_REF@[1453; 1455)
702 IDENT@[1453; 1455) "_x"
703 WHITESPACE@[1455; 1456)
704 PLUSEQ@[1456; 1458)
705 WHITESPACE@[1458; 1459)
706 LITERAL@[1459; 1460)
707 INT_NUMBER@[1459; 1460) "0"
708 R_PAREN@[1460; 1461)
709 WHITESPACE@[1461; 1462)
710 EQEQ@[1462; 1464)
711 WHITESPACE@[1464; 1465)
712 PAREN_EXPR@[1465; 1473)
713 L_PAREN@[1465; 1466)
714 BIN_EXPR@[1466; 1472)
715 PATH_EXPR@[1466; 1468)
716 PATH@[1466; 1468)
717 PATH_SEGMENT@[1466; 1468)
718 NAME_REF@[1466; 1468)
719 IDENT@[1466; 1468) "_x"
720 WHITESPACE@[1468; 1469)
721 EQ@[1469; 1470)
722 WHITESPACE@[1470; 1471)
723 LITERAL@[1471; 1472)
724 INT_NUMBER@[1471; 1472) "0"
725 R_PAREN@[1472; 1473)
726 SEMI@[1473; 1474)
727 WHITESPACE@[1474; 1479)
728 LET_STMT@[1479; 1537)
729 LET_KW@[1479; 1482)
730 WHITESPACE@[1482; 1483)
731 BIND_PAT@[1483; 1485)
732 NAME@[1483; 1485)
733 IDENT@[1483; 1485) "_b"
734 WHITESPACE@[1485; 1486)
735 EQ@[1486; 1487)
736 WHITESPACE@[1487; 1488)
737 BIN_EXPR@[1488; 1536)
738 CALL_EXPR@[1488; 1510)
739 PATH_EXPR@[1488; 1492)
740 PATH@[1488; 1492)
741 PATH_SEGMENT@[1488; 1492)
742 NAME_REF@[1488; 1492)
743 IDENT@[1488; 1492) "swap"
744 ARG_LIST@[1492; 1510)
745 L_PAREN@[1492; 1493)
746 REF_EXPR@[1493; 1500)
747 AMP@[1493; 1494)
748 MUT_KW@[1494; 1497)
749 WHITESPACE@[1497; 1498)
750 PATH_EXPR@[1498; 1500)
751 PATH@[1498; 1500)
752 PATH_SEGMENT@[1498; 1500)
753 NAME_REF@[1498; 1500)
754 IDENT@[1498; 1500) "_y"
755 COMMA@[1500; 1501)
756 WHITESPACE@[1501; 1502)
757 REF_EXPR@[1502; 1509)
758 AMP@[1502; 1503)
759 MUT_KW@[1503; 1506)
760 WHITESPACE@[1506; 1507)
761 PATH_EXPR@[1507; 1509)
762 PATH@[1507; 1509)
763 PATH_SEGMENT@[1507; 1509)
764 NAME_REF@[1507; 1509)
765 IDENT@[1507; 1509) "_z"
766 R_PAREN@[1509; 1510)
767 WHITESPACE@[1510; 1511)
768 EQEQ@[1511; 1513)
769 WHITESPACE@[1513; 1514)
770 CALL_EXPR@[1514; 1536)
771 PATH_EXPR@[1514; 1518)
772 PATH@[1514; 1518)
773 PATH_SEGMENT@[1514; 1518)
774 NAME_REF@[1514; 1518)
775 IDENT@[1514; 1518) "swap"
776 ARG_LIST@[1518; 1536)
777 L_PAREN@[1518; 1519)
778 REF_EXPR@[1519; 1526)
779 AMP@[1519; 1520)
780 MUT_KW@[1520; 1523)
781 WHITESPACE@[1523; 1524)
782 PATH_EXPR@[1524; 1526)
783 PATH@[1524; 1526)
784 PATH_SEGMENT@[1524; 1526)
785 NAME_REF@[1524; 1526)
786 IDENT@[1524; 1526) "_y"
787 COMMA@[1526; 1527)
788 WHITESPACE@[1527; 1528)
789 REF_EXPR@[1528; 1535)
790 AMP@[1528; 1529)
791 MUT_KW@[1529; 1532)
792 WHITESPACE@[1532; 1533)
793 PATH_EXPR@[1533; 1535)
794 PATH@[1533; 1535)
795 PATH_SEGMENT@[1533; 1535)
796 NAME_REF@[1533; 1535)
797 IDENT@[1533; 1535) "_z"
798 R_PAREN@[1535; 1536)
799 SEMI@[1536; 1537)
800 WHITESPACE@[1537; 1538)
801 R_CURLY@[1538; 1539)
802 WHITESPACE@[1539; 1541)
803 FN_DEF@[1541; 1741)
804 FN_KW@[1541; 1543)
805 WHITESPACE@[1543; 1544)
806 NAME@[1544; 1557)
807 IDENT@[1544; 1557) "canttouchthis"
808 PARAM_LIST@[1557; 1559)
809 L_PAREN@[1557; 1558)
810 R_PAREN@[1558; 1559)
811 WHITESPACE@[1559; 1560)
812 RET_TYPE@[1560; 1568)
813 THIN_ARROW@[1560; 1562)
814 WHITESPACE@[1562; 1563)
815 PATH_TYPE@[1563; 1568)
816 PATH@[1563; 1568)
817 PATH_SEGMENT@[1563; 1568)
818 NAME_REF@[1563; 1568)
819 IDENT@[1563; 1568) "usize"
820 WHITESPACE@[1568; 1569)
821 BLOCK@[1569; 1741)
822 L_CURLY@[1569; 1570)
823 WHITESPACE@[1570; 1575)
824 FN_DEF@[1575; 1598)
825 FN_KW@[1575; 1577)
826 WHITESPACE@[1577; 1578)
827 NAME@[1578; 1579)
828 IDENT@[1578; 1579) "p"
829 PARAM_LIST@[1579; 1581)
830 L_PAREN@[1579; 1580)
831 R_PAREN@[1580; 1581)
832 WHITESPACE@[1581; 1582)
833 RET_TYPE@[1582; 1589)
834 THIN_ARROW@[1582; 1584)
835 WHITESPACE@[1584; 1585)
836 PATH_TYPE@[1585; 1589)
837 PATH@[1585; 1589)
838 PATH_SEGMENT@[1585; 1589)
839 NAME_REF@[1585; 1589)
840 IDENT@[1585; 1589) "bool"
841 WHITESPACE@[1589; 1590)
842 BLOCK@[1590; 1598)
843 L_CURLY@[1590; 1591)
844 WHITESPACE@[1591; 1592)
845 LITERAL@[1592; 1596)
846 TRUE_KW@[1592; 1596)
847 WHITESPACE@[1596; 1597)
848 R_CURLY@[1597; 1598)
849 WHITESPACE@[1598; 1603)
850 LET_STMT@[1603; 1648)
851 LET_KW@[1603; 1606)
852 WHITESPACE@[1606; 1607)
853 BIND_PAT@[1607; 1609)
854 NAME@[1607; 1609)
855 IDENT@[1607; 1609) "_a"
856 WHITESPACE@[1609; 1610)
857 EQ@[1610; 1611)
858 WHITESPACE@[1611; 1612)
859 PAREN_EXPR@[1612; 1647)
860 L_PAREN@[1612; 1613)
861 BIN_EXPR@[1613; 1646)
862 MACRO_CALL@[1613; 1628)
863 PATH@[1613; 1619)
864 PATH_SEGMENT@[1613; 1619)
865 NAME_REF@[1613; 1619)
866 IDENT@[1613; 1619) "assert"
867 EXCL@[1619; 1620)
868 TOKEN_TREE@[1620; 1628)
869 L_PAREN@[1620; 1621)
870 TOKEN_TREE@[1621; 1627)
871 L_PAREN@[1621; 1622)
872 TRUE_KW@[1622; 1626)
873 R_PAREN@[1626; 1627)
874 R_PAREN@[1627; 1628)
875 WHITESPACE@[1628; 1629)
876 EQEQ@[1629; 1631)
877 WHITESPACE@[1631; 1632)
878 PAREN_EXPR@[1632; 1646)
879 L_PAREN@[1632; 1633)
880 MACRO_CALL@[1633; 1645)
881 PATH@[1633; 1639)
882 PATH_SEGMENT@[1633; 1639)
883 NAME_REF@[1633; 1639)
884 IDENT@[1633; 1639) "assert"
885 EXCL@[1639; 1640)
886 TOKEN_TREE@[1640; 1645)
887 L_PAREN@[1640; 1641)
888 IDENT@[1641; 1642) "p"
889 TOKEN_TREE@[1642; 1644)
890 L_PAREN@[1642; 1643)
891 R_PAREN@[1643; 1644)
892 R_PAREN@[1644; 1645)
893 R_PAREN@[1645; 1646)
894 R_PAREN@[1646; 1647)
895 SEMI@[1647; 1648)
896 WHITESPACE@[1648; 1653)
897 LET_STMT@[1653; 1685)
898 LET_KW@[1653; 1656)
899 WHITESPACE@[1656; 1657)
900 BIND_PAT@[1657; 1659)
901 NAME@[1657; 1659)
902 IDENT@[1657; 1659) "_c"
903 WHITESPACE@[1659; 1660)
904 EQ@[1660; 1661)
905 WHITESPACE@[1661; 1662)
906 PAREN_EXPR@[1662; 1684)
907 L_PAREN@[1662; 1663)
908 BIN_EXPR@[1663; 1683)
909 MACRO_CALL@[1663; 1677)
910 PATH@[1663; 1669)
911 PATH_SEGMENT@[1663; 1669)
912 NAME_REF@[1663; 1669)
913 IDENT@[1663; 1669) "assert"
914 EXCL@[1669; 1670)
915 TOKEN_TREE@[1670; 1677)
916 L_PAREN@[1670; 1671)
917 TOKEN_TREE@[1671; 1676)
918 L_PAREN@[1671; 1672)
919 IDENT@[1672; 1673) "p"
920 TOKEN_TREE@[1673; 1675)
921 L_PAREN@[1673; 1674)
922 R_PAREN@[1674; 1675)
923 R_PAREN@[1675; 1676)
924 R_PAREN@[1676; 1677)
925 WHITESPACE@[1677; 1678)
926 EQEQ@[1678; 1680)
927 WHITESPACE@[1680; 1681)
928 TUPLE_EXPR@[1681; 1683)
929 L_PAREN@[1681; 1682)
930 R_PAREN@[1682; 1683)
931 R_PAREN@[1683; 1684)
932 SEMI@[1684; 1685)
933 WHITESPACE@[1685; 1690)
934 LET_STMT@[1690; 1739)
935 LET_KW@[1690; 1693)
936 WHITESPACE@[1693; 1694)
937 BIND_PAT@[1694; 1696)
938 NAME@[1694; 1696)
939 IDENT@[1694; 1696) "_b"
940 COLON@[1696; 1697)
941 WHITESPACE@[1697; 1698)
942 PATH_TYPE@[1698; 1702)
943 PATH@[1698; 1702)
944 PATH_SEGMENT@[1698; 1702)
945 NAME_REF@[1698; 1702)
946 IDENT@[1698; 1702) "bool"
947 WHITESPACE@[1702; 1703)
948 EQ@[1703; 1704)
949 WHITESPACE@[1704; 1705)
950 PAREN_EXPR@[1705; 1738)
951 L_PAREN@[1705; 1706)
952 BIN_EXPR@[1706; 1737)
953 MACRO_CALL@[1706; 1723)
954 PATH@[1706; 1713)
955 PATH_SEGMENT@[1706; 1713)
956 NAME_REF@[1706; 1713)
957 IDENT@[1706; 1713) "println"
958 EXCL@[1713; 1714)
959 TOKEN_TREE@[1714; 1723)
960 L_PAREN@[1714; 1715)
961 STRING@[1715; 1719)
962 COMMA@[1719; 1720)
963 WHITESPACE@[1720; 1721)
964 INT_NUMBER@[1721; 1722) "0"
965 R_PAREN@[1722; 1723)
966 WHITESPACE@[1723; 1724)
967 EQEQ@[1724; 1726)
968 WHITESPACE@[1726; 1727)
969 PAREN_EXPR@[1727; 1737)
970 L_PAREN@[1727; 1728)
971 RETURN_EXPR@[1728; 1736)
972 RETURN_KW@[1728; 1734)
973 WHITESPACE@[1734; 1735)
974 LITERAL@[1735; 1736)
975 INT_NUMBER@[1735; 1736) "0"
976 R_PAREN@[1736; 1737)
977 R_PAREN@[1737; 1738)
978 SEMI@[1738; 1739)
979 WHITESPACE@[1739; 1740)
980 R_CURLY@[1740; 1741)
981 WHITESPACE@[1741; 1743)
982 FN_DEF@[1743; 1904)
983 FN_KW@[1743; 1745)
984 WHITESPACE@[1745; 1746)
985 NAME@[1746; 1755)
986 IDENT@[1746; 1755) "angrydome"
987 PARAM_LIST@[1755; 1757)
988 L_PAREN@[1755; 1756)
989 R_PAREN@[1756; 1757)
990 WHITESPACE@[1757; 1758)
991 BLOCK@[1758; 1904)
992 L_CURLY@[1758; 1759)
993 WHITESPACE@[1759; 1764)
994 EXPR_STMT@[1764; 1785)
995 LOOP_EXPR@[1764; 1785)
996 LOOP_KW@[1764; 1768)
997 WHITESPACE@[1768; 1769)
998 BLOCK@[1769; 1785)
999 L_CURLY@[1769; 1770)
1000 WHITESPACE@[1770; 1771)
1001 IF_EXPR@[1771; 1783)
1002 IF_KW@[1771; 1773)
1003 WHITESPACE@[1773; 1774)
1004 CONDITION@[1774; 1779)
1005 BREAK_EXPR@[1774; 1779)
1006 BREAK_KW@[1774; 1779)
1007 WHITESPACE@[1779; 1780)
1008 BLOCK@[1780; 1783)
1009 L_CURLY@[1780; 1781)
1010 WHITESPACE@[1781; 1782)
1011 R_CURLY@[1782; 1783)
1012 WHITESPACE@[1783; 1784)
1013 R_CURLY@[1784; 1785)
1014 WHITESPACE@[1785; 1790)
1015 LET_STMT@[1790; 1804)
1016 LET_KW@[1790; 1793)
1017 WHITESPACE@[1793; 1794)
1018 BIND_PAT@[1794; 1799)
1019 MUT_KW@[1794; 1797)
1020 WHITESPACE@[1797; 1798)
1021 NAME@[1798; 1799)
1022 IDENT@[1798; 1799) "i"
1023 WHITESPACE@[1799; 1800)
1024 EQ@[1800; 1801)
1025 WHITESPACE@[1801; 1802)
1026 LITERAL@[1802; 1803)
1027 INT_NUMBER@[1802; 1803) "0"
1028 SEMI@[1803; 1804)
1029 WHITESPACE@[1804; 1809)
1030 LOOP_EXPR@[1809; 1902)
1031 LOOP_KW@[1809; 1813)
1032 WHITESPACE@[1813; 1814)
1033 BLOCK@[1814; 1902)
1034 L_CURLY@[1814; 1815)
1035 WHITESPACE@[1815; 1816)
1036 EXPR_STMT@[1816; 1823)
1037 BIN_EXPR@[1816; 1822)
1038 PATH_EXPR@[1816; 1817)
1039 PATH@[1816; 1817)
1040 PATH_SEGMENT@[1816; 1817)
1041 NAME_REF@[1816; 1817)
1042 IDENT@[1816; 1817) "i"
1043 WHITESPACE@[1817; 1818)
1044 PLUSEQ@[1818; 1820)
1045 WHITESPACE@[1820; 1821)
1046 LITERAL@[1821; 1822)
1047 INT_NUMBER@[1821; 1822) "1"
1048 SEMI@[1822; 1823)
1049 WHITESPACE@[1823; 1824)
1050 EXPR_STMT@[1824; 1887)
1051 IF_EXPR@[1824; 1887)
1052 IF_KW@[1824; 1826)
1053 WHITESPACE@[1826; 1827)
1054 CONDITION@[1827; 1833)
1055 BIN_EXPR@[1827; 1833)
1056 PATH_EXPR@[1827; 1828)
1057 PATH@[1827; 1828)
1058 PATH_SEGMENT@[1827; 1828)
1059 NAME_REF@[1827; 1828)
1060 IDENT@[1827; 1828) "i"
1061 WHITESPACE@[1828; 1829)
1062 EQEQ@[1829; 1831)
1063 WHITESPACE@[1831; 1832)
1064 LITERAL@[1832; 1833)
1065 INT_NUMBER@[1832; 1833) "1"
1066 WHITESPACE@[1833; 1834)
1067 BLOCK@[1834; 1887)
1068 L_CURLY@[1834; 1835)
1069 WHITESPACE@[1835; 1836)
1070 MATCH_EXPR@[1836; 1885)
1071 MATCH_KW@[1836; 1841)
1072 WHITESPACE@[1841; 1842)
1073 PAREN_EXPR@[1842; 1852)
1074 L_PAREN@[1842; 1843)
1075 CONTINUE_EXPR@[1843; 1851)
1076 CONTINUE_KW@[1843; 1851)
1077 R_PAREN@[1851; 1852)
1078 WHITESPACE@[1852; 1853)
1079 MATCH_ARM_LIST@[1853; 1885)
1080 L_CURLY@[1853; 1854)
1081 WHITESPACE@[1854; 1855)
1082 MATCH_ARM@[1855; 1863)
1083 LITERAL@[1855; 1856)
1084 INT_NUMBER@[1855; 1856) "1"
1085 WHITESPACE@[1856; 1857)
1086 FAT_ARROW@[1857; 1859)
1087 WHITESPACE@[1859; 1860)
1088 BLOCK_EXPR@[1860; 1863)
1089 BLOCK@[1860; 1863)
1090 L_CURLY@[1860; 1861)
1091 WHITESPACE@[1861; 1862)
1092 R_CURLY@[1862; 1863)
1093 COMMA@[1863; 1864)
1094 WHITESPACE@[1864; 1865)
1095 MATCH_ARM@[1865; 1883)
1096 PLACEHOLDER_PAT@[1865; 1866)
1097 UNDERSCORE@[1865; 1866)
1098 WHITESPACE@[1866; 1867)
1099 FAT_ARROW@[1867; 1869)
1100 WHITESPACE@[1869; 1870)
1101 MACRO_CALL@[1870; 1883)
1102 PATH@[1870; 1875)
1103 PATH_SEGMENT@[1870; 1875)
1104 NAME_REF@[1870; 1875)
1105 IDENT@[1870; 1875) "panic"
1106 EXCL@[1875; 1876)
1107 TOKEN_TREE@[1876; 1883)
1108 L_PAREN@[1876; 1877)
1109 STRING@[1877; 1882)
1110 R_PAREN@[1882; 1883)
1111 WHITESPACE@[1883; 1884)
1112 R_CURLY@[1884; 1885)
1113 WHITESPACE@[1885; 1886)
1114 R_CURLY@[1886; 1887)
1115 WHITESPACE@[1887; 1894)
1116 EXPR_STMT@[1894; 1900)
1117 BREAK_EXPR@[1894; 1899)
1118 BREAK_KW@[1894; 1899)
1119 SEMI@[1899; 1900)
1120 WHITESPACE@[1900; 1901)
1121 R_CURLY@[1901; 1902)
1122 WHITESPACE@[1902; 1903)
1123 R_CURLY@[1903; 1904)
1124 WHITESPACE@[1904; 1906)
1125 FN_DEF@[1906; 1960)
1126 FN_KW@[1906; 1908)
1127 WHITESPACE@[1908; 1909)
1128 NAME@[1909; 1921)
1129 IDENT@[1909; 1921) "evil_lincoln"
1130 PARAM_LIST@[1921; 1923)
1131 L_PAREN@[1921; 1922)
1132 R_PAREN@[1922; 1923)
1133 WHITESPACE@[1923; 1924)
1134 BLOCK@[1924; 1960)
1135 L_CURLY@[1924; 1925)
1136 WHITESPACE@[1925; 1926)
1137 LET_STMT@[1926; 1958)
1138 LET_KW@[1926; 1929)
1139 WHITESPACE@[1929; 1930)
1140 BIND_PAT@[1930; 1935)
1141 NAME@[1930; 1935)
1142 IDENT@[1930; 1935) "_evil"
1143 WHITESPACE@[1935; 1936)
1144 EQ@[1936; 1937)
1145 WHITESPACE@[1937; 1938)
1146 MACRO_CALL@[1938; 1957)
1147 PATH@[1938; 1945)
1148 PATH_SEGMENT@[1938; 1945)
1149 NAME_REF@[1938; 1945)
1150 IDENT@[1938; 1945) "println"
1151 EXCL@[1945; 1946)
1152 TOKEN_TREE@[1946; 1957)
1153 L_PAREN@[1946; 1947)
1154 STRING@[1947; 1956)
1155 R_PAREN@[1956; 1957)
1156 SEMI@[1957; 1958)
1157 WHITESPACE@[1958; 1959)
1158 R_CURLY@[1959; 1960)
1159 WHITESPACE@[1960; 1962)
1160 FN_DEF@[1962; 2198)
1161 FN_KW@[1962; 1964)
1162 WHITESPACE@[1964; 1965)
1163 NAME@[1965; 1969)
1164 IDENT@[1965; 1969) "dots"
1165 PARAM_LIST@[1969; 1971)
1166 L_PAREN@[1969; 1970)
1167 R_PAREN@[1970; 1971)
1168 WHITESPACE@[1971; 1972)
1169 BLOCK@[1972; 2198)
1170 L_CURLY@[1972; 1973)
1171 WHITESPACE@[1973; 1978)
1172 EXPR_STMT@[1978; 2196)
1173 MACRO_CALL@[1978; 2195)
1174 PATH@[1978; 1987)
1175 PATH_SEGMENT@[1978; 1987)
1176 NAME_REF@[1978; 1987)
1177 IDENT@[1978; 1987) "assert_eq"
1178 EXCL@[1987; 1988)
1179 TOKEN_TREE@[1988; 2195)
1180 L_PAREN@[1988; 1989)
1181 IDENT@[1989; 1995) "String"
1182 COLONCOLON@[1995; 1997)
1183 IDENT@[1997; 2001) "from"
1184 TOKEN_TREE@[2001; 2055)
1185 L_PAREN@[2001; 2002)
1186 STRING@[2002; 2054)
1187 R_PAREN@[2054; 2055)
1188 COMMA@[2055; 2056)
1189 WHITESPACE@[2056; 2072)
1190 IDENT@[2072; 2078) "format"
1191 EXCL@[2078; 2079)
1192 TOKEN_TREE@[2079; 2194)
1193 L_PAREN@[2079; 2080)
1194 STRING@[2080; 2086)
1195 COMMA@[2086; 2087)
1196 WHITESPACE@[2087; 2088)
1197 DOTDOT@[2088; 2090)
1198 WHITESPACE@[2090; 2091)
1199 DOTDOT@[2091; 2093)
1200 WHITESPACE@[2093; 2094)
1201 DOTDOT@[2094; 2096)
1202 WHITESPACE@[2096; 2097)
1203 DOTDOT@[2097; 2099)
1204 WHITESPACE@[2099; 2100)
1205 DOTDOT@[2100; 2102)
1206 WHITESPACE@[2102; 2103)
1207 DOTDOT@[2103; 2105)
1208 WHITESPACE@[2105; 2106)
1209 DOTDOT@[2106; 2108)
1210 WHITESPACE@[2108; 2109)
1211 DOTDOT@[2109; 2111)
1212 WHITESPACE@[2111; 2112)
1213 DOTDOT@[2112; 2114)
1214 WHITESPACE@[2114; 2115)
1215 DOTDOT@[2115; 2117)
1216 WHITESPACE@[2117; 2118)
1217 DOTDOT@[2118; 2120)
1218 WHITESPACE@[2120; 2121)
1219 DOTDOT@[2121; 2123)
1220 WHITESPACE@[2123; 2124)
1221 DOTDOT@[2124; 2126)
1222 WHITESPACE@[2126; 2158)
1223 DOTDOT@[2158; 2160)
1224 WHITESPACE@[2160; 2161)
1225 DOTDOT@[2161; 2163)
1226 WHITESPACE@[2163; 2164)
1227 DOTDOT@[2164; 2166)
1228 WHITESPACE@[2166; 2167)
1229 DOTDOT@[2167; 2169)
1230 WHITESPACE@[2169; 2170)
1231 DOTDOT@[2170; 2172)
1232 WHITESPACE@[2172; 2173)
1233 DOTDOT@[2173; 2175)
1234 WHITESPACE@[2175; 2176)
1235 DOTDOT@[2176; 2178)
1236 WHITESPACE@[2178; 2179)
1237 DOTDOT@[2179; 2181)
1238 WHITESPACE@[2181; 2182)
1239 DOTDOT@[2182; 2184)
1240 WHITESPACE@[2184; 2185)
1241 DOTDOT@[2185; 2187)
1242 WHITESPACE@[2187; 2188)
1243 DOTDOT@[2188; 2190)
1244 WHITESPACE@[2190; 2191)
1245 DOTDOT@[2191; 2193)
1246 R_PAREN@[2193; 2194)
1247 R_PAREN@[2194; 2195)
1248 SEMI@[2195; 2196)
1249 WHITESPACE@[2196; 2197)
1250 R_CURLY@[2197; 2198)
1251 WHITESPACE@[2198; 2200)
1252 FN_DEF@[2200; 2693)
1253 FN_KW@[2200; 2202)
1254 WHITESPACE@[2202; 2203)
1255 NAME@[2203; 2205)
1256 IDENT@[2203; 2205) "u8"
1257 PARAM_LIST@[2205; 2213)
1258 L_PAREN@[2205; 2206)
1259 PARAM@[2206; 2212)
1260 BIND_PAT@[2206; 2208)
1261 NAME@[2206; 2208)
1262 IDENT@[2206; 2208) "u8"
1263 COLON@[2208; 2209)
1264 WHITESPACE@[2209; 2210)
1265 PATH_TYPE@[2210; 2212)
1266 PATH@[2210; 2212)
1267 PATH_SEGMENT@[2210; 2212)
1268 NAME_REF@[2210; 2212)
1269 IDENT@[2210; 2212) "u8"
1270 R_PAREN@[2212; 2213)
1271 WHITESPACE@[2213; 2214)
1272 BLOCK@[2214; 2693)
1273 L_CURLY@[2214; 2215)
1274 WHITESPACE@[2215; 2220)
1275 IF_EXPR@[2220; 2691)
1276 IF_KW@[2220; 2222)
1277 WHITESPACE@[2222; 2223)
1278 CONDITION@[2223; 2232)
1279 BIN_EXPR@[2223; 2232)
1280 PATH_EXPR@[2223; 2225)
1281 PATH@[2223; 2225)
1282 PATH_SEGMENT@[2223; 2225)
1283 NAME_REF@[2223; 2225)
1284 IDENT@[2223; 2225) "u8"
1285 WHITESPACE@[2225; 2226)
1286 NEQ@[2226; 2228)
1287 WHITESPACE@[2228; 2229)
1288 LITERAL@[2229; 2232)
1289 INT_NUMBER@[2229; 2232) "0u8"
1290 WHITESPACE@[2232; 2233)
1291 BLOCK@[2233; 2691)
1292 L_CURLY@[2233; 2234)
1293 WHITESPACE@[2234; 2243)
1294 EXPR_STMT@[2243; 2685)
1295 MACRO_CALL@[2243; 2684)
1296 PATH@[2243; 2252)
1297 PATH_SEGMENT@[2243; 2252)
1298 NAME_REF@[2243; 2252)
1299 IDENT@[2243; 2252) "assert_eq"
1300 EXCL@[2252; 2253)
1301 TOKEN_TREE@[2253; 2684)
1302 L_PAREN@[2253; 2254)
1303 INT_NUMBER@[2254; 2257) "8u8"
1304 COMMA@[2257; 2258)
1305 WHITESPACE@[2258; 2259)
1306 TOKEN_TREE@[2259; 2683)
1307 L_CURLY@[2259; 2260)
1308 WHITESPACE@[2260; 2273)
1309 IDENT@[2273; 2284) "macro_rules"
1310 EXCL@[2284; 2285)
1311 WHITESPACE@[2285; 2286)
1312 IDENT@[2286; 2288) "u8"
1313 WHITESPACE@[2288; 2289)
1314 TOKEN_TREE@[2289; 2567)
1315 L_CURLY@[2289; 2290)
1316 WHITESPACE@[2290; 2307)
1317 TOKEN_TREE@[2307; 2311)
1318 L_PAREN@[2307; 2308)
1319 IDENT@[2308; 2310) "u8"
1320 R_PAREN@[2310; 2311)
1321 WHITESPACE@[2311; 2312)
1322 FAT_ARROW@[2312; 2314)
1323 WHITESPACE@[2314; 2315)
1324 TOKEN_TREE@[2315; 2552)
1325 L_CURLY@[2315; 2316)
1326 WHITESPACE@[2316; 2337)
1327 MOD_KW@[2337; 2340)
1328 WHITESPACE@[2340; 2341)
1329 IDENT@[2341; 2343) "u8"
1330 WHITESPACE@[2343; 2344)
1331 TOKEN_TREE@[2344; 2534)
1332 L_CURLY@[2344; 2345)
1333 WHITESPACE@[2345; 2370)
1334 PUB_KW@[2370; 2373)
1335 WHITESPACE@[2373; 2374)
1336 FN_KW@[2374; 2376)
1337 WHITESPACE@[2376; 2377)
1338 IDENT@[2377; 2379) "u8"
1339 L_ANGLE@[2379; 2380)
1340 LIFETIME@[2380; 2383) "'u8"
1341 COLON@[2383; 2384)
1342 WHITESPACE@[2384; 2385)
1343 LIFETIME@[2385; 2388) "'u8"
1344 WHITESPACE@[2388; 2389)
1345 PLUS@[2389; 2390)
1346 WHITESPACE@[2390; 2391)
1347 LIFETIME@[2391; 2394) "'u8"
1348 R_ANGLE@[2394; 2395)
1349 TOKEN_TREE@[2395; 2408)
1350 L_PAREN@[2395; 2396)
1351 IDENT@[2396; 2398) "u8"
1352 COLON@[2398; 2399)
1353 WHITESPACE@[2399; 2400)
1354 AMP@[2400; 2401)
1355 LIFETIME@[2401; 2404) "'u8"
1356 WHITESPACE@[2404; 2405)
1357 IDENT@[2405; 2407) "u8"
1358 R_PAREN@[2407; 2408)
1359 WHITESPACE@[2408; 2409)
1360 THIN_ARROW@[2409; 2411)
1361 WHITESPACE@[2411; 2412)
1362 AMP@[2412; 2413)
1363 LIFETIME@[2413; 2416) "'u8"
1364 WHITESPACE@[2416; 2417)
1365 IDENT@[2417; 2419) "u8"
1366 WHITESPACE@[2419; 2420)
1367 TOKEN_TREE@[2420; 2512)
1368 L_CURLY@[2420; 2421)
1369 WHITESPACE@[2421; 2450)
1370 STRING@[2450; 2454)
1371 SEMI@[2454; 2455)
1372 WHITESPACE@[2455; 2484)
1373 IDENT@[2484; 2486) "u8"
1374 WHITESPACE@[2486; 2511)
1375 R_CURLY@[2511; 2512)
1376 WHITESPACE@[2512; 2533)
1377 R_CURLY@[2533; 2534)
1378 WHITESPACE@[2534; 2551)
1379 R_CURLY@[2551; 2552)
1380 SEMI@[2552; 2553)
1381 WHITESPACE@[2553; 2566)
1382 R_CURLY@[2566; 2567)
1383 WHITESPACE@[2567; 2581)
1384 IDENT@[2581; 2583) "u8"
1385 EXCL@[2583; 2584)
1386 TOKEN_TREE@[2584; 2588)
1387 L_PAREN@[2584; 2585)
1388 IDENT@[2585; 2587) "u8"
1389 R_PAREN@[2587; 2588)
1390 SEMI@[2588; 2589)
1391 WHITESPACE@[2589; 2602)
1392 LET_KW@[2602; 2605)
1393 WHITESPACE@[2605; 2606)
1394 AMP@[2606; 2607)
1395 IDENT@[2607; 2609) "u8"
1396 COLON@[2609; 2610)
1397 WHITESPACE@[2610; 2611)
1398 AMP@[2611; 2612)
1399 IDENT@[2612; 2614) "u8"
1400 WHITESPACE@[2614; 2615)
1401 EQ@[2615; 2616)
1402 WHITESPACE@[2616; 2617)
1403 IDENT@[2617; 2619) "u8"
1404 COLONCOLON@[2619; 2621)
1405 IDENT@[2621; 2623) "u8"
1406 TOKEN_TREE@[2623; 2629)
1407 L_PAREN@[2623; 2624)
1408 AMP@[2624; 2625)
1409 INT_NUMBER@[2625; 2628) "8u8"
1410 R_PAREN@[2628; 2629)
1411 SEMI@[2629; 2630)
1412 WHITESPACE@[2630; 2643)
1413 CRATE_KW@[2643; 2648)
1414 COLONCOLON@[2648; 2650)
1415 IDENT@[2650; 2652) "u8"
1416 TOKEN_TREE@[2652; 2657)
1417 L_PAREN@[2652; 2653)
1418 INT_NUMBER@[2653; 2656) "0u8"
1419 R_PAREN@[2656; 2657)
1420 SEMI@[2657; 2658)
1421 WHITESPACE@[2658; 2671)
1422 IDENT@[2671; 2673) "u8"
1423 WHITESPACE@[2673; 2682)
1424 R_CURLY@[2682; 2683)
1425 R_PAREN@[2683; 2684)
1426 SEMI@[2684; 2685)
1427 WHITESPACE@[2685; 2690)
1428 R_CURLY@[2690; 2691)
1429 WHITESPACE@[2691; 2692)
1430 R_CURLY@[2692; 2693)
1431 WHITESPACE@[2693; 2695)
1432 FN_DEF@[2695; 2832)
1433 FN_KW@[2695; 2697)
1434 WHITESPACE@[2697; 2698)
1435 NAME@[2698; 2703)
1436 IDENT@[2698; 2703) "fishy"
1437 PARAM_LIST@[2703; 2705)
1438 L_PAREN@[2703; 2704)
1439 R_PAREN@[2704; 2705)
1440 WHITESPACE@[2705; 2706)
1441 BLOCK@[2706; 2832)
1442 L_CURLY@[2706; 2707)
1443 WHITESPACE@[2707; 2712)
1444 EXPR_STMT@[2712; 2830)
1445 MACRO_CALL@[2712; 2829)
1446 PATH@[2712; 2721)
1447 PATH_SEGMENT@[2712; 2721)
1448 NAME_REF@[2712; 2721)
1449 IDENT@[2712; 2721) "assert_eq"
1450 EXCL@[2721; 2722)
1451 TOKEN_TREE@[2722; 2829)
1452 L_PAREN@[2722; 2723)
1453 IDENT@[2723; 2729) "String"
1454 COLONCOLON@[2729; 2731)
1455 IDENT@[2731; 2735) "from"
1456 TOKEN_TREE@[2735; 2742)
1457 L_PAREN@[2735; 2736)
1458 STRING@[2736; 2741)
1459 R_PAREN@[2741; 2742)
1460 COMMA@[2742; 2743)
1461 WHITESPACE@[2743; 2759)
1462 IDENT@[2759; 2765) "String"
1463 COLONCOLON@[2765; 2767)
1464 L_ANGLE@[2767; 2768)
1465 R_ANGLE@[2768; 2769)
1466 COLONCOLON@[2769; 2771)
1467 IDENT@[2771; 2775) "from"
1468 COLONCOLON@[2775; 2777)
1469 L_ANGLE@[2777; 2778)
1470 R_ANGLE@[2778; 2779)
1471 TOKEN_TREE@[2779; 2786)
1472 L_PAREN@[2779; 2780)
1473 STRING@[2780; 2785)
1474 R_PAREN@[2785; 2786)
1475 DOT@[2786; 2787)
1476 IDENT@[2787; 2792) "chars"
1477 COLONCOLON@[2792; 2794)
1478 L_ANGLE@[2794; 2795)
1479 R_ANGLE@[2795; 2796)
1480 TOKEN_TREE@[2796; 2798)
1481 L_PAREN@[2796; 2797)
1482 R_PAREN@[2797; 2798)
1483 DOT@[2798; 2799)
1484 IDENT@[2799; 2802) "rev"
1485 COLONCOLON@[2802; 2804)
1486 L_ANGLE@[2804; 2805)
1487 R_ANGLE@[2805; 2806)
1488 TOKEN_TREE@[2806; 2808)
1489 L_PAREN@[2806; 2807)
1490 R_PAREN@[2807; 2808)
1491 DOT@[2808; 2809)
1492 IDENT@[2809; 2816) "collect"
1493 COLONCOLON@[2816; 2818)
1494 L_ANGLE@[2818; 2819)
1495 IDENT@[2819; 2825) "String"
1496 R_ANGLE@[2825; 2826)
1497 TOKEN_TREE@[2826; 2828)
1498 L_PAREN@[2826; 2827)
1499 R_PAREN@[2827; 2828)
1500 R_PAREN@[2828; 2829)
1501 SEMI@[2829; 2830)
1502 WHITESPACE@[2830; 2831)
1503 R_CURLY@[2831; 2832)
1504 WHITESPACE@[2832; 2834)
1505 FN_DEF@[2834; 2906)
1506 FN_KW@[2834; 2836)
1507 WHITESPACE@[2836; 2837)
1508 NAME@[2837; 2842)
1509 IDENT@[2837; 2842) "union"
1510 PARAM_LIST@[2842; 2844)
1511 L_PAREN@[2842; 2843)
1512 R_PAREN@[2843; 2844)
1513 WHITESPACE@[2844; 2845)
1514 BLOCK@[2845; 2906)
1515 L_CURLY@[2845; 2846)
1516 WHITESPACE@[2846; 2851)
1517 STRUCT_DEF@[2851; 2904)
1518 UNION_KW@[2851; 2856)
1519 WHITESPACE@[2856; 2857)
1520 NAME@[2857; 2862)
1521 IDENT@[2857; 2862) "union"
1522 TYPE_PARAM_LIST@[2862; 2870)
1523 L_ANGLE@[2862; 2863)
1524 LIFETIME_PARAM@[2863; 2869)
1525 LIFETIME@[2863; 2869) "'union"
1526 R_ANGLE@[2869; 2870)
1527 WHITESPACE@[2870; 2871)
1528 NAMED_FIELD_DEF_LIST@[2871; 2904)
1529 L_CURLY@[2871; 2872)
1530 WHITESPACE@[2872; 2873)
1531 NAMED_FIELD_DEF@[2873; 2901)
1532 NAME@[2873; 2878)
1533 IDENT@[2873; 2878) "union"
1534 COLON@[2878; 2879)
1535 WHITESPACE@[2879; 2880)
1536 REFERENCE_TYPE@[2880; 2901)
1537 AMP@[2880; 2881)
1538 LIFETIME@[2881; 2887) "'union"
1539 WHITESPACE@[2887; 2888)
1540 PATH_TYPE@[2888; 2901)
1541 PATH@[2888; 2901)
1542 PATH_SEGMENT@[2888; 2901)
1543 NAME_REF@[2888; 2893)
1544 IDENT@[2888; 2893) "union"
1545 TYPE_ARG_LIST@[2893; 2901)
1546 L_ANGLE@[2893; 2894)
1547 LIFETIME_ARG@[2894; 2900)
1548 LIFETIME@[2894; 2900) "'union"
1549 R_ANGLE@[2900; 2901)
1550 COMMA@[2901; 2902)
1551 WHITESPACE@[2902; 2903)
1552 R_CURLY@[2903; 2904)
1553 WHITESPACE@[2904; 2905)
1554 R_CURLY@[2905; 2906)
1555 WHITESPACE@[2906; 2908)
1556 FN_DEF@[2908; 3042)
1557 FN_KW@[2908; 2910)
1558 WHITESPACE@[2910; 2911)
1559 NAME@[2911; 2929)
1560 IDENT@[2911; 2929) "special_characters"
1561 PARAM_LIST@[2929; 2931)
1562 L_PAREN@[2929; 2930)
1563 R_PAREN@[2930; 2931)
1564 WHITESPACE@[2931; 2932)
1565 BLOCK@[2932; 3042)
1566 L_CURLY@[2932; 2933)
1567 WHITESPACE@[2933; 2938)
1568 LET_STMT@[2938; 3021)
1569 LET_KW@[2938; 2941)
1570 WHITESPACE@[2941; 2942)
1571 BIND_PAT@[2942; 2945)
1572 NAME@[2942; 2945)
1573 IDENT@[2942; 2945) "val"
1574 WHITESPACE@[2945; 2946)
1575 EQ@[2946; 2947)
1576 WHITESPACE@[2947; 2948)
1577 PREFIX_EXPR@[2948; 3013)
1578 EXCL@[2948; 2949)
1579 PAREN_EXPR@[2949; 3013)
1580 L_PAREN@[2949; 2950)
1581 BIN_EXPR@[2950; 3012)
1582 CALL_EXPR@[2950; 2995)
1583 PAREN_EXPR@[2950; 2971)
1584 L_PAREN@[2950; 2951)
1585 LAMBDA_EXPR@[2951; 2970)
1586 PARAM_LIST@[2951; 2968)
1587 PIPE@[2951; 2952)
1588 PARAM@[2952; 2962)
1589 TUPLE_PAT@[2952; 2956)
1590 L_PAREN@[2952; 2953)
1591 DOTDOT@[2953; 2955)
1592 R_PAREN@[2955; 2956)
1593 COLON@[2956; 2957)
1594 TUPLE_TYPE@[2957; 2962)
1595 L_PAREN@[2957; 2958)
1596 PLACEHOLDER_TYPE@[2958; 2959)
1597 UNDERSCORE@[2958; 2959)
1598 COMMA@[2959; 2960)
1599 PLACEHOLDER_TYPE@[2960; 2961)
1600 UNDERSCORE@[2960; 2961)
1601 R_PAREN@[2961; 2962)
1602 COMMA@[2962; 2963)
1603 PARAM@[2963; 2967)
1604 BIND_PAT@[2963; 2967)
1605 NAME@[2963; 2965)
1606 IDENT@[2963; 2965) "__"
1607 AT@[2965; 2966)
1608 PLACEHOLDER_PAT@[2966; 2967)
1609 UNDERSCORE@[2966; 2967)
1610 PIPE@[2967; 2968)
1611 PATH_EXPR@[2968; 2970)
1612 PATH@[2968; 2970)
1613 PATH_SEGMENT@[2968; 2970)
1614 NAME_REF@[2968; 2970)
1615 IDENT@[2968; 2970) "__"
1616 R_PAREN@[2970; 2971)
1617 ARG_LIST@[2971; 2995)
1618 L_PAREN@[2971; 2972)
1619 TUPLE_EXPR@[2972; 2987)
1620 L_PAREN@[2972; 2973)
1621 REF_EXPR@[2973; 2979)
1622 AMP@[2973; 2974)
1623 PREFIX_EXPR@[2974; 2979)
1624 STAR@[2974; 2975)
1625 LITERAL@[2975; 2979)
1626 STRING@[2975; 2979)
1627 COMMA@[2979; 2980)
1628 LITERAL@[2980; 2986)
1629 CHAR@[2980; 2986)
1630 R_PAREN@[2986; 2987)
1631 COMMENT@[2987; 2991)
1632 COMMA@[2991; 2992)
1633 BLOCK_EXPR@[2992; 2994)
1634 BLOCK@[2992; 2994)
1635 L_CURLY@[2992; 2993)
1636 R_CURLY@[2993; 2994)
1637 R_PAREN@[2994; 2995)
1638 EQEQ@[2995; 2997)
1639 BLOCK_EXPR@[2997; 3012)
1640 BLOCK@[2997; 3012)
1641 L_CURLY@[2997; 2998)
1642 EXPR_STMT@[2998; 3011)
1643 REF_EXPR@[2998; 3010)
1644 AMP@[2998; 2999)
1645 INDEX_EXPR@[2999; 3010)
1646 ARRAY_EXPR@[2999; 3006)
1647 L_BRACK@[2999; 3000)
1648 RANGE_EXPR@[3000; 3005)
1649 DOTDOTEQ@[3000; 3003)
1650 RANGE_EXPR@[3003; 3005)
1651 DOTDOT@[3003; 3005)
1652 R_BRACK@[3005; 3006)
1653 L_BRACK@[3006; 3007)
1654 RANGE_EXPR@[3007; 3009)
1655 DOTDOT@[3007; 3009)
1656 R_BRACK@[3009; 3010)
1657 SEMI@[3010; 3011)
1658 R_CURLY@[3011; 3012)
1659 R_PAREN@[3012; 3013)
1660 COMMENT@[3013; 3015)
1661 WHITESPACE@[3015; 3020)
1662 SEMI@[3020; 3021)
1663 WHITESPACE@[3021; 3026)
1664 EXPR_STMT@[3026; 3040)
1665 MACRO_CALL@[3026; 3039)
1666 PATH@[3026; 3032)
1667 PATH_SEGMENT@[3026; 3032)
1668 NAME_REF@[3026; 3032)
1669 IDENT@[3026; 3032) "assert"
1670 EXCL@[3032; 3033)
1671 TOKEN_TREE@[3033; 3039)
1672 L_PAREN@[3033; 3034)
1673 EXCL@[3034; 3035)
1674 IDENT@[3035; 3038) "val"
1675 R_PAREN@[3038; 3039)
1676 SEMI@[3039; 3040)
1677 WHITESPACE@[3040; 3041)
1678 R_CURLY@[3041; 3042)
1679 WHITESPACE@[3042; 3044)
1680 FN_DEF@[3044; 3514)
1681 FN_KW@[3044; 3046)
1682 WHITESPACE@[3046; 3047)
1683 NAME@[3047; 3057)
1684 IDENT@[3047; 3057) "punch_card"
1685 PARAM_LIST@[3057; 3059)
1686 L_PAREN@[3057; 3058)
1687 R_PAREN@[3058; 3059)
1688 WHITESPACE@[3059; 3060)
1689 RET_TYPE@[3060; 3083)
1690 THIN_ARROW@[3060; 3062)
1691 WHITESPACE@[3062; 3063)
1692 IMPL_TRAIT_TYPE@[3063; 3083)
1693 IMPL_KW@[3063; 3067)
1694 WHITESPACE@[3067; 3068)
1695 PATH_TYPE@[3068; 3083)
1696 PATH@[3068; 3083)
1697 PATH@[3068; 3076)
1698 PATH@[3068; 3071)
1699 PATH_SEGMENT@[3068; 3071)
1700 NAME_REF@[3068; 3071)
1701 IDENT@[3068; 3071) "std"
1702 COLONCOLON@[3071; 3073)
1703 PATH_SEGMENT@[3073; 3076)
1704 NAME_REF@[3073; 3076)
1705 IDENT@[3073; 3076) "fmt"
1706 COLONCOLON@[3076; 3078)
1707 PATH_SEGMENT@[3078; 3083)
1708 NAME_REF@[3078; 3083)
1709 IDENT@[3078; 3083) "Debug"
1710 WHITESPACE@[3083; 3084)
1711 BLOCK@[3084; 3514)
1712 L_CURLY@[3084; 3085)
1713 WHITESPACE@[3085; 3090)
1714 RANGE_EXPR@[3090; 3512)
1715 DOTDOTEQ@[3090; 3093)
1716 RANGE_EXPR@[3093; 3512)
1717 DOTDOTEQ@[3093; 3096)
1718 RANGE_EXPR@[3096; 3512)
1719 DOTDOT@[3096; 3098)
1720 WHITESPACE@[3098; 3099)
1721 RANGE_EXPR@[3099; 3512)
1722 DOTDOT@[3099; 3101)
1723 WHITESPACE@[3101; 3105)
1724 RANGE_EXPR@[3105; 3512)
1725 DOTDOT@[3105; 3107)
1726 WHITESPACE@[3107; 3108)
1727 RANGE_EXPR@[3108; 3512)
1728 DOTDOT@[3108; 3110)
1729 WHITESPACE@[3110; 3111)
1730 RANGE_EXPR@[3111; 3512)
1731 DOTDOT@[3111; 3113)
1732 WHITESPACE@[3113; 3114)
1733 RANGE_EXPR@[3114; 3512)
1734 DOTDOT@[3114; 3116)
1735 WHITESPACE@[3116; 3120)
1736 RANGE_EXPR@[3120; 3512)
1737 DOTDOT@[3120; 3122)
1738 WHITESPACE@[3122; 3123)
1739 RANGE_EXPR@[3123; 3512)
1740 DOTDOT@[3123; 3125)
1741 WHITESPACE@[3125; 3126)
1742 RANGE_EXPR@[3126; 3512)
1743 DOTDOT@[3126; 3128)
1744 WHITESPACE@[3128; 3129)
1745 RANGE_EXPR@[3129; 3512)
1746 DOTDOT@[3129; 3131)
1747 WHITESPACE@[3131; 3135)
1748 RANGE_EXPR@[3135; 3512)
1749 DOTDOT@[3135; 3137)
1750 WHITESPACE@[3137; 3138)
1751 RANGE_EXPR@[3138; 3512)
1752 DOTDOTEQ@[3138; 3141)
1753 RANGE_EXPR@[3141; 3512)
1754 DOTDOT@[3141; 3143)
1755 WHITESPACE@[3143; 3144)
1756 RANGE_EXPR@[3144; 3512)
1757 DOTDOT@[3144; 3146)
1758 WHITESPACE@[3146; 3151)
1759 RANGE_EXPR@[3151; 3512)
1760 DOTDOTEQ@[3151; 3154)
1761 RANGE_EXPR@[3154; 3512)
1762 DOTDOT@[3154; 3156)
1763 WHITESPACE@[3156; 3157)
1764 RANGE_EXPR@[3157; 3512)
1765 DOTDOTEQ@[3157; 3160)
1766 RANGE_EXPR@[3160; 3512)
1767 DOTDOT@[3160; 3162)
1768 WHITESPACE@[3162; 3166)
1769 RANGE_EXPR@[3166; 3512)
1770 DOTDOT@[3166; 3168)
1771 WHITESPACE@[3168; 3169)
1772 RANGE_EXPR@[3169; 3512)
1773 DOTDOT@[3169; 3171)
1774 WHITESPACE@[3171; 3172)
1775 RANGE_EXPR@[3172; 3512)
1776 DOTDOT@[3172; 3174)
1777 WHITESPACE@[3174; 3175)
1778 RANGE_EXPR@[3175; 3512)
1779 DOTDOT@[3175; 3177)
1780 WHITESPACE@[3177; 3181)
1781 RANGE_EXPR@[3181; 3512)
1782 DOTDOT@[3181; 3183)
1783 WHITESPACE@[3183; 3184)
1784 RANGE_EXPR@[3184; 3512)
1785 DOTDOT@[3184; 3186)
1786 WHITESPACE@[3186; 3187)
1787 RANGE_EXPR@[3187; 3512)
1788 DOTDOT@[3187; 3189)
1789 WHITESPACE@[3189; 3190)
1790 RANGE_EXPR@[3190; 3512)
1791 DOTDOT@[3190; 3192)
1792 WHITESPACE@[3192; 3196)
1793 RANGE_EXPR@[3196; 3512)
1794 DOTDOTEQ@[3196; 3199)
1795 RANGE_EXPR@[3199; 3512)
1796 DOTDOTEQ@[3199; 3202)
1797 RANGE_EXPR@[3202; 3512)
1798 DOTDOTEQ@[3202; 3205)
1799 RANGE_EXPR@[3205; 3512)
1800 DOTDOT@[3205; 3207)
1801 WHITESPACE@[3207; 3212)
1802 RANGE_EXPR@[3212; 3512)
1803 DOTDOTEQ@[3212; 3215)
1804 RANGE_EXPR@[3215; 3512)
1805 DOTDOT@[3215; 3217)
1806 WHITESPACE@[3217; 3218)
1807 RANGE_EXPR@[3218; 3512)
1808 DOTDOTEQ@[3218; 3221)
1809 RANGE_EXPR@[3221; 3512)
1810 DOTDOT@[3221; 3223)
1811 WHITESPACE@[3223; 3227)
1812 RANGE_EXPR@[3227; 3512)
1813 DOTDOTEQ@[3227; 3230)
1814 RANGE_EXPR@[3230; 3512)
1815 DOTDOT@[3230; 3232)
1816 WHITESPACE@[3232; 3233)
1817 RANGE_EXPR@[3233; 3512)
1818 DOTDOTEQ@[3233; 3236)
1819 RANGE_EXPR@[3236; 3512)
1820 DOTDOT@[3236; 3238)
1821 WHITESPACE@[3238; 3242)
1822 RANGE_EXPR@[3242; 3512)
1823 DOTDOT@[3242; 3244)
1824 WHITESPACE@[3244; 3245)
1825 RANGE_EXPR@[3245; 3512)
1826 DOTDOTEQ@[3245; 3248)
1827 RANGE_EXPR@[3248; 3512)
1828 DOTDOTEQ@[3248; 3251)
1829 RANGE_EXPR@[3251; 3512)
1830 DOTDOT@[3251; 3253)
1831 WHITESPACE@[3253; 3257)
1832 RANGE_EXPR@[3257; 3512)
1833 DOTDOT@[3257; 3259)
1834 WHITESPACE@[3259; 3260)
1835 RANGE_EXPR@[3260; 3512)
1836 DOTDOTEQ@[3260; 3263)
1837 RANGE_EXPR@[3263; 3512)
1838 DOTDOT@[3263; 3265)
1839 WHITESPACE@[3265; 3266)
1840 RANGE_EXPR@[3266; 3512)
1841 DOTDOT@[3266; 3268)
1842 WHITESPACE@[3268; 3273)
1843 RANGE_EXPR@[3273; 3512)
1844 DOTDOTEQ@[3273; 3276)
1845 RANGE_EXPR@[3276; 3512)
1846 DOTDOTEQ@[3276; 3279)
1847 RANGE_EXPR@[3279; 3512)
1848 DOTDOT@[3279; 3281)
1849 WHITESPACE@[3281; 3282)
1850 RANGE_EXPR@[3282; 3512)
1851 DOTDOT@[3282; 3284)
1852 WHITESPACE@[3284; 3288)
1853 RANGE_EXPR@[3288; 3512)
1854 DOTDOTEQ@[3288; 3291)
1855 RANGE_EXPR@[3291; 3512)
1856 DOTDOT@[3291; 3293)
1857 WHITESPACE@[3293; 3294)
1858 RANGE_EXPR@[3294; 3512)
1859 DOTDOTEQ@[3294; 3297)
1860 RANGE_EXPR@[3297; 3512)
1861 DOTDOT@[3297; 3299)
1862 WHITESPACE@[3299; 3303)
1863 RANGE_EXPR@[3303; 3512)
1864 DOTDOTEQ@[3303; 3306)
1865 RANGE_EXPR@[3306; 3512)
1866 DOTDOT@[3306; 3308)
1867 WHITESPACE@[3308; 3309)
1868 RANGE_EXPR@[3309; 3512)
1869 DOTDOT@[3309; 3311)
1870 WHITESPACE@[3311; 3312)
1871 RANGE_EXPR@[3312; 3512)
1872 DOTDOT@[3312; 3314)
1873 WHITESPACE@[3314; 3318)
1874 RANGE_EXPR@[3318; 3512)
1875 DOTDOT@[3318; 3320)
1876 WHITESPACE@[3320; 3321)
1877 RANGE_EXPR@[3321; 3512)
1878 DOTDOTEQ@[3321; 3324)
1879 RANGE_EXPR@[3324; 3512)
1880 DOTDOT@[3324; 3326)
1881 WHITESPACE@[3326; 3327)
1882 RANGE_EXPR@[3327; 3512)
1883 DOTDOT@[3327; 3329)
1884 WHITESPACE@[3329; 3334)
1885 RANGE_EXPR@[3334; 3512)
1886 DOTDOTEQ@[3334; 3337)
1887 RANGE_EXPR@[3337; 3512)
1888 DOTDOT@[3337; 3339)
1889 WHITESPACE@[3339; 3340)
1890 RANGE_EXPR@[3340; 3512)
1891 DOTDOTEQ@[3340; 3343)
1892 RANGE_EXPR@[3343; 3512)
1893 DOTDOT@[3343; 3345)
1894 WHITESPACE@[3345; 3349)
1895 RANGE_EXPR@[3349; 3512)
1896 DOTDOTEQ@[3349; 3352)
1897 RANGE_EXPR@[3352; 3512)
1898 DOTDOT@[3352; 3354)
1899 WHITESPACE@[3354; 3355)
1900 RANGE_EXPR@[3355; 3512)
1901 DOTDOTEQ@[3355; 3358)
1902 RANGE_EXPR@[3358; 3512)
1903 DOTDOT@[3358; 3360)
1904 WHITESPACE@[3360; 3364)
1905 RANGE_EXPR@[3364; 3512)
1906 DOTDOT@[3364; 3366)
1907 WHITESPACE@[3366; 3367)
1908 RANGE_EXPR@[3367; 3512)
1909 DOTDOTEQ@[3367; 3370)
1910 RANGE_EXPR@[3370; 3512)
1911 DOTDOT@[3370; 3372)
1912 WHITESPACE@[3372; 3373)
1913 RANGE_EXPR@[3373; 3512)
1914 DOTDOT@[3373; 3375)
1915 WHITESPACE@[3375; 3379)
1916 RANGE_EXPR@[3379; 3512)
1917 DOTDOT@[3379; 3381)
1918 WHITESPACE@[3381; 3382)
1919 RANGE_EXPR@[3382; 3512)
1920 DOTDOTEQ@[3382; 3385)
1921 RANGE_EXPR@[3385; 3512)
1922 DOTDOT@[3385; 3387)
1923 WHITESPACE@[3387; 3388)
1924 RANGE_EXPR@[3388; 3512)
1925 DOTDOT@[3388; 3390)
1926 WHITESPACE@[3390; 3395)
1927 RANGE_EXPR@[3395; 3512)
1928 DOTDOTEQ@[3395; 3398)
1929 RANGE_EXPR@[3398; 3512)
1930 DOTDOT@[3398; 3400)
1931 WHITESPACE@[3400; 3401)
1932 RANGE_EXPR@[3401; 3512)
1933 DOTDOTEQ@[3401; 3404)
1934 RANGE_EXPR@[3404; 3512)
1935 DOTDOT@[3404; 3406)
1936 WHITESPACE@[3406; 3410)
1937 RANGE_EXPR@[3410; 3512)
1938 DOTDOTEQ@[3410; 3413)
1939 RANGE_EXPR@[3413; 3512)
1940 DOTDOT@[3413; 3415)
1941 WHITESPACE@[3415; 3416)
1942 RANGE_EXPR@[3416; 3512)
1943 DOTDOTEQ@[3416; 3419)
1944 RANGE_EXPR@[3419; 3512)
1945 DOTDOT@[3419; 3421)
1946 WHITESPACE@[3421; 3425)
1947 RANGE_EXPR@[3425; 3512)
1948 DOTDOT@[3425; 3427)
1949 WHITESPACE@[3427; 3428)
1950 RANGE_EXPR@[3428; 3512)
1951 DOTDOT@[3428; 3430)
1952 WHITESPACE@[3430; 3431)
1953 RANGE_EXPR@[3431; 3512)
1954 DOTDOTEQ@[3431; 3434)
1955 RANGE_EXPR@[3434; 3512)
1956 DOTDOT@[3434; 3436)
1957 WHITESPACE@[3436; 3440)
1958 RANGE_EXPR@[3440; 3512)
1959 DOTDOT@[3440; 3442)
1960 WHITESPACE@[3442; 3443)
1961 RANGE_EXPR@[3443; 3512)
1962 DOTDOTEQ@[3443; 3446)
1963 RANGE_EXPR@[3446; 3512)
1964 DOTDOT@[3446; 3448)
1965 WHITESPACE@[3448; 3449)
1966 RANGE_EXPR@[3449; 3512)
1967 DOTDOT@[3449; 3451)
1968 WHITESPACE@[3451; 3456)
1969 RANGE_EXPR@[3456; 3512)
1970 DOTDOTEQ@[3456; 3459)
1971 RANGE_EXPR@[3459; 3512)
1972 DOTDOT@[3459; 3461)
1973 WHITESPACE@[3461; 3462)
1974 RANGE_EXPR@[3462; 3512)
1975 DOTDOTEQ@[3462; 3465)
1976 RANGE_EXPR@[3465; 3512)
1977 DOTDOT@[3465; 3467)
1978 WHITESPACE@[3467; 3471)
1979 RANGE_EXPR@[3471; 3512)
1980 DOTDOT@[3471; 3473)
1981 WHITESPACE@[3473; 3474)
1982 RANGE_EXPR@[3474; 3512)
1983 DOTDOTEQ@[3474; 3477)
1984 RANGE_EXPR@[3477; 3512)
1985 DOTDOTEQ@[3477; 3480)
1986 RANGE_EXPR@[3480; 3512)
1987 DOTDOT@[3480; 3482)
1988 WHITESPACE@[3482; 3486)
1989 RANGE_EXPR@[3486; 3512)
1990 DOTDOTEQ@[3486; 3489)
1991 RANGE_EXPR@[3489; 3512)
1992 DOTDOTEQ@[3489; 3492)
1993 RANGE_EXPR@[3492; 3512)
1994 DOTDOT@[3492; 3494)
1995 WHITESPACE@[3494; 3495)
1996 RANGE_EXPR@[3495; 3512)
1997 DOTDOT@[3495; 3497)
1998 WHITESPACE@[3497; 3501)
1999 RANGE_EXPR@[3501; 3512)
2000 DOTDOT@[3501; 3503)
2001 WHITESPACE@[3503; 3504)
2002 RANGE_EXPR@[3504; 3512)
2003 DOTDOTEQ@[3504; 3507)
2004 RANGE_EXPR@[3507; 3512)
2005 DOTDOT@[3507; 3509)
2006 WHITESPACE@[3509; 3510)
2007 RANGE_EXPR@[3510; 3512)
2008 DOTDOT@[3510; 3512)
2009 WHITESPACE@[3512; 3513)
2010 R_CURLY@[3513; 3514)
2011 WHITESPACE@[3514; 3516)
2012 FN_DEF@[3516; 3552)
2013 FN_KW@[3516; 3518)
2014 WHITESPACE@[3518; 3519)
2015 NAME@[3519; 3525)
2016 IDENT@[3519; 3525) "ktulhu"
2017 PARAM_LIST@[3525; 3527)
2018 L_PAREN@[3525; 3526)
2019 R_PAREN@[3526; 3527)
2020 WHITESPACE@[3527; 3528)
2021 BLOCK@[3528; 3552)
2022 L_CURLY@[3528; 3529)
2023 WHITESPACE@[3529; 3534)
2024 SEMI@[3534; 3535)
2025 SEMI@[3535; 3536)
2026 SEMI@[3536; 3537)
2027 EXPR_STMT@[3537; 3540)
2028 TUPLE_EXPR@[3537; 3539)
2029 L_PAREN@[3537; 3538)
2030 R_PAREN@[3538; 3539)
2031 SEMI@[3539; 3540)
2032 SEMI@[3540; 3541)
2033 SEMI@[3541; 3542)
2034 SEMI@[3542; 3543)
2035 SEMI@[3543; 3544)
2036 SEMI@[3544; 3545)
2037 SEMI@[3545; 3546)
2038 SEMI@[3546; 3547)
2039 SEMI@[3547; 3548)
2040 TUPLE_EXPR@[3548; 3550)
2041 L_PAREN@[3548; 3549)
2042 R_PAREN@[3549; 3550)
2043 WHITESPACE@[3550; 3551)
2044 R_CURLY@[3551; 3552)
2045 WHITESPACE@[3552; 3554)
2046 FN_DEF@[3554; 3812)
2047 VISIBILITY@[3554; 3557)
2048 PUB_KW@[3554; 3557)
2049 WHITESPACE@[3557; 3558)
2050 FN_KW@[3558; 3560)
2051 WHITESPACE@[3560; 3561)
2052 NAME@[3561; 3565)
2053 IDENT@[3561; 3565) "main"
2054 PARAM_LIST@[3565; 3567)
2055 L_PAREN@[3565; 3566)
2056 R_PAREN@[3566; 3567)
2057 WHITESPACE@[3567; 3568)
2058 BLOCK@[3568; 3812)
2059 L_CURLY@[3568; 3569)
2060 WHITESPACE@[3569; 3574)
2061 EXPR_STMT@[3574; 3584)
2062 CALL_EXPR@[3574; 3583)
2063 PATH_EXPR@[3574; 3581)
2064 PATH@[3574; 3581)
2065 PATH_SEGMENT@[3574; 3581)
2066 NAME_REF@[3574; 3581)
2067 IDENT@[3574; 3581) "strange"
2068 ARG_LIST@[3581; 3583)
2069 L_PAREN@[3581; 3582)
2070 R_PAREN@[3582; 3583)
2071 SEMI@[3583; 3584)
2072 WHITESPACE@[3584; 3589)
2073 EXPR_STMT@[3589; 3597)
2074 CALL_EXPR@[3589; 3596)
2075 PATH_EXPR@[3589; 3594)
2076 PATH@[3589; 3594)
2077 PATH_SEGMENT@[3589; 3594)
2078 NAME_REF@[3589; 3594)
2079 IDENT@[3589; 3594) "funny"
2080 ARG_LIST@[3594; 3596)
2081 L_PAREN@[3594; 3595)
2082 R_PAREN@[3595; 3596)
2083 SEMI@[3596; 3597)
2084 WHITESPACE@[3597; 3602)
2085 EXPR_STMT@[3602; 3609)
2086 CALL_EXPR@[3602; 3608)
2087 PATH_EXPR@[3602; 3606)
2088 PATH@[3602; 3606)
2089 PATH_SEGMENT@[3602; 3606)
2090 NAME_REF@[3602; 3606)
2091 IDENT@[3602; 3606) "what"
2092 ARG_LIST@[3606; 3608)
2093 L_PAREN@[3606; 3607)
2094 R_PAREN@[3607; 3608)
2095 SEMI@[3608; 3609)
2096 WHITESPACE@[3609; 3614)
2097 EXPR_STMT@[3614; 3628)
2098 CALL_EXPR@[3614; 3627)
2099 PATH_EXPR@[3614; 3625)
2100 PATH@[3614; 3625)
2101 PATH_SEGMENT@[3614; 3625)
2102 NAME_REF@[3614; 3625)
2103 IDENT@[3614; 3625) "zombiejesus"
2104 ARG_LIST@[3625; 3627)
2105 L_PAREN@[3625; 3626)
2106 R_PAREN@[3626; 3627)
2107 SEMI@[3627; 3628)
2108 WHITESPACE@[3628; 3633)
2109 EXPR_STMT@[3633; 3643)
2110 CALL_EXPR@[3633; 3642)
2111 PATH_EXPR@[3633; 3640)
2112 PATH@[3633; 3640)
2113 PATH_SEGMENT@[3633; 3640)
2114 NAME_REF@[3633; 3640)
2115 IDENT@[3633; 3640) "notsure"
2116 ARG_LIST@[3640; 3642)
2117 L_PAREN@[3640; 3641)
2118 R_PAREN@[3641; 3642)
2119 SEMI@[3642; 3643)
2120 WHITESPACE@[3643; 3648)
2121 EXPR_STMT@[3648; 3664)
2122 CALL_EXPR@[3648; 3663)
2123 PATH_EXPR@[3648; 3661)
2124 PATH@[3648; 3661)
2125 PATH_SEGMENT@[3648; 3661)
2126 NAME_REF@[3648; 3661)
2127 IDENT@[3648; 3661) "canttouchthis"
2128 ARG_LIST@[3661; 3663)
2129 L_PAREN@[3661; 3662)
2130 R_PAREN@[3662; 3663)
2131 SEMI@[3663; 3664)
2132 WHITESPACE@[3664; 3669)
2133 EXPR_STMT@[3669; 3681)
2134 CALL_EXPR@[3669; 3680)
2135 PATH_EXPR@[3669; 3678)
2136 PATH@[3669; 3678)
2137 PATH_SEGMENT@[3669; 3678)
2138 NAME_REF@[3669; 3678)
2139 IDENT@[3669; 3678) "angrydome"
2140 ARG_LIST@[3678; 3680)
2141 L_PAREN@[3678; 3679)
2142 R_PAREN@[3679; 3680)
2143 SEMI@[3680; 3681)
2144 WHITESPACE@[3681; 3686)
2145 EXPR_STMT@[3686; 3701)
2146 CALL_EXPR@[3686; 3700)
2147 PATH_EXPR@[3686; 3698)
2148 PATH@[3686; 3698)
2149 PATH_SEGMENT@[3686; 3698)
2150 NAME_REF@[3686; 3698)
2151 IDENT@[3686; 3698) "evil_lincoln"
2152 ARG_LIST@[3698; 3700)
2153 L_PAREN@[3698; 3699)
2154 R_PAREN@[3699; 3700)
2155 SEMI@[3700; 3701)
2156 WHITESPACE@[3701; 3706)
2157 EXPR_STMT@[3706; 3713)
2158 CALL_EXPR@[3706; 3712)
2159 PATH_EXPR@[3706; 3710)
2160 PATH@[3706; 3710)
2161 PATH_SEGMENT@[3706; 3710)
2162 NAME_REF@[3706; 3710)
2163 IDENT@[3706; 3710) "dots"
2164 ARG_LIST@[3710; 3712)
2165 L_PAREN@[3710; 3711)
2166 R_PAREN@[3711; 3712)
2167 SEMI@[3712; 3713)
2168 WHITESPACE@[3713; 3718)
2169 EXPR_STMT@[3718; 3726)
2170 CALL_EXPR@[3718; 3725)
2171 PATH_EXPR@[3718; 3720)
2172 PATH@[3718; 3720)
2173 PATH_SEGMENT@[3718; 3720)
2174 NAME_REF@[3718; 3720)
2175 IDENT@[3718; 3720) "u8"
2176 ARG_LIST@[3720; 3725)
2177 L_PAREN@[3720; 3721)
2178 LITERAL@[3721; 3724)
2179 INT_NUMBER@[3721; 3724) "8u8"
2180 R_PAREN@[3724; 3725)
2181 SEMI@[3725; 3726)
2182 WHITESPACE@[3726; 3731)
2183 EXPR_STMT@[3731; 3739)
2184 CALL_EXPR@[3731; 3738)
2185 PATH_EXPR@[3731; 3736)
2186 PATH@[3731; 3736)
2187 PATH_SEGMENT@[3731; 3736)
2188 NAME_REF@[3731; 3736)
2189 IDENT@[3731; 3736) "fishy"
2190 ARG_LIST@[3736; 3738)
2191 L_PAREN@[3736; 3737)
2192 R_PAREN@[3737; 3738)
2193 SEMI@[3738; 3739)
2194 WHITESPACE@[3739; 3744)
2195 EXPR_STMT@[3744; 3752)
2196 CALL_EXPR@[3744; 3751)
2197 PATH_EXPR@[3744; 3749)
2198 PATH@[3744; 3749)
2199 PATH_SEGMENT@[3744; 3749)
2200 NAME_REF@[3744; 3749)
2201 IDENT@[3744; 3749) "union"
2202 ARG_LIST@[3749; 3751)
2203 L_PAREN@[3749; 3750)
2204 R_PAREN@[3750; 3751)
2205 SEMI@[3751; 3752)
2206 WHITESPACE@[3752; 3757)
2207 EXPR_STMT@[3757; 3778)
2208 CALL_EXPR@[3757; 3777)
2209 PATH_EXPR@[3757; 3775)
2210 PATH@[3757; 3775)
2211 PATH_SEGMENT@[3757; 3775)
2212 NAME_REF@[3757; 3775)
2213 IDENT@[3757; 3775) "special_characters"
2214 ARG_LIST@[3775; 3777)
2215 L_PAREN@[3775; 3776)
2216 R_PAREN@[3776; 3777)
2217 SEMI@[3777; 3778)
2218 WHITESPACE@[3778; 3783)
2219 EXPR_STMT@[3783; 3796)
2220 CALL_EXPR@[3783; 3795)
2221 PATH_EXPR@[3783; 3793)
2222 PATH@[3783; 3793)
2223 PATH_SEGMENT@[3783; 3793)
2224 NAME_REF@[3783; 3793)
2225 IDENT@[3783; 3793) "punch_card"
2226 ARG_LIST@[3793; 3795)
2227 L_PAREN@[3793; 3794)
2228 R_PAREN@[3794; 3795)
2229 SEMI@[3795; 3796)
2230 WHITESPACE@[3796; 3801)
2231 EXPR_STMT@[3801; 3810)
2232 CALL_EXPR@[3801; 3809)
2233 PATH_EXPR@[3801; 3807)
2234 PATH@[3801; 3807)
2235 PATH_SEGMENT@[3801; 3807)
2236 NAME_REF@[3801; 3807)
2237 IDENT@[3801; 3807) "ktulhu"
2238 ARG_LIST@[3807; 3809)
2239 L_PAREN@[3807; 3808)
2240 R_PAREN@[3808; 3809)
2241 SEMI@[3809; 3810)
2242 WHITESPACE@[3810; 3811)
2243 R_CURLY@[3811; 3812)
2244 WHITESPACE@[3812; 3813)