aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/test_data/parser/ok
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-04-24 22:51:02 +0100
committerAleksey Kladov <[email protected]>2020-04-25 10:59:18 +0100
commit8843588fca7a6022b86800d5d2539594c0de93cf (patch)
tree3c5162068377dbd53dbf40b602baeeed7aa82285 /crates/ra_syntax/test_data/parser/ok
parentb1d5817dd18b7b5fc102a63b084b1ee7ff4f9996 (diff)
Convert tests to text-size
Diffstat (limited to 'crates/ra_syntax/test_data/parser/ok')
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0000_empty.rast2
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0001_struct_item.rast78
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.rast44
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0004_file_shebang.rast4
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0005_fn_item.rast32
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.rast368
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0007_extern_crate.rast80
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0008_mod_item.rast186
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0009_use_item.rast42
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.rast84
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.rast116
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0012_visibility.rast214
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.rast114
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0014_use_tree.rast190
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0015_use_tree.rast130
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.rast186
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.rast58
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.rast514
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0019_enums.rast310
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.rast536
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0021_extern_fn.rast118
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.rast42
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0023_static_items.rast82
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0024_const_item.rast118
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.rast66
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.rast64
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rast86
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.rast372
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0029_range_forms.rast304
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.rast128
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0030_traits.rast122
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0031_extern.rast1946
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0032_where_for.rast182
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0033_label_break.rast440
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.rast84
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.rast4658
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.rast186
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0037_mod.rast32
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.rast86
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.rast32
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.rast44
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.rast100
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.rast252
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.rast220
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0044_let_attrs.rast152
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.rast362
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.rast56
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rast646
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.rast402
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0049_async_block.rast72
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.rast184
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.rast1038
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0052_for_range_block.rast162
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast78
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rast252
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0055_dot_dot_dot.rast100
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.rast132
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0057_loop_in_call.rast118
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0058_unary_expr_precedence.rast194
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0059_loops_in_parens.rast202
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0060_as_range.rast112
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0061_match_full_range.rast54
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0062_macro_2.0.rast352
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.rast396
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.rast266
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.rast332
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0065_comment_newline.rast34
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast122
68 files changed, 9435 insertions, 9435 deletions
diff --git a/crates/ra_syntax/test_data/parser/ok/0000_empty.rast b/crates/ra_syntax/test_data/parser/ok/0000_empty.rast
index 08f5a942f..6b234b0b2 100644
--- a/crates/ra_syntax/test_data/parser/ok/0000_empty.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0000_empty.rast
@@ -1 +1 @@
SOURCE_FILE@[0; 0) SOURCE_FILE@0..0
diff --git a/crates/ra_syntax/test_data/parser/ok/0001_struct_item.rast b/crates/ra_syntax/test_data/parser/ok/0001_struct_item.rast
index fdc2d6768..705f7e001 100644
--- a/crates/ra_syntax/test_data/parser/ok/0001_struct_item.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0001_struct_item.rast
@@ -1,39 +1,39 @@
1SOURCE_FILE@[0; 32) 1SOURCE_FILE@0..32
2 STRUCT_DEF@[0; 31) 2 STRUCT_DEF@0..31
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 TYPE_PARAM_LIST@[8; 17) 7 TYPE_PARAM_LIST@8..17
8 L_ANGLE@[8; 9) "<" 8 L_ANGLE@8..9 "<"
9 TYPE_PARAM@[9; 16) 9 TYPE_PARAM@9..16
10 NAME@[9; 10) 10 NAME@9..10
11 IDENT@[9; 10) "T" 11 IDENT@9..10 "T"
12 COLON@[10; 11) ":" 12 COLON@10..11 ":"
13 WHITESPACE@[11; 12) " " 13 WHITESPACE@11..12 " "
14 TYPE_BOUND_LIST@[12; 16) 14 TYPE_BOUND_LIST@12..16
15 TYPE_BOUND@[12; 16) 15 TYPE_BOUND@12..16
16 PATH_TYPE@[12; 16) 16 PATH_TYPE@12..16
17 PATH@[12; 16) 17 PATH@12..16
18 PATH_SEGMENT@[12; 16) 18 PATH_SEGMENT@12..16
19 NAME_REF@[12; 16) 19 NAME_REF@12..16
20 IDENT@[12; 16) "Copy" 20 IDENT@12..16 "Copy"
21 R_ANGLE@[16; 17) ">" 21 R_ANGLE@16..17 ">"
22 WHITESPACE@[17; 18) " " 22 WHITESPACE@17..18 " "
23 RECORD_FIELD_DEF_LIST@[18; 31) 23 RECORD_FIELD_DEF_LIST@18..31
24 L_CURLY@[18; 19) "{" 24 L_CURLY@18..19 "{"
25 WHITESPACE@[19; 24) "\n " 25 WHITESPACE@19..24 "\n "
26 RECORD_FIELD_DEF@[24; 28) 26 RECORD_FIELD_DEF@24..28
27 NAME@[24; 25) 27 NAME@24..25
28 IDENT@[24; 25) "f" 28 IDENT@24..25 "f"
29 COLON@[25; 26) ":" 29 COLON@25..26 ":"
30 WHITESPACE@[26; 27) " " 30 WHITESPACE@26..27 " "
31 PATH_TYPE@[27; 28) 31 PATH_TYPE@27..28
32 PATH@[27; 28) 32 PATH@27..28
33 PATH_SEGMENT@[27; 28) 33 PATH_SEGMENT@27..28
34 NAME_REF@[27; 28) 34 NAME_REF@27..28
35 IDENT@[27; 28) "T" 35 IDENT@27..28 "T"
36 COMMA@[28; 29) "," 36 COMMA@28..29 ","
37 WHITESPACE@[29; 30) "\n" 37 WHITESPACE@29..30 "\n"
38 R_CURLY@[30; 31) "}" 38 R_CURLY@30..31 "}"
39 WHITESPACE@[31; 32) "\n" 39 WHITESPACE@31..32 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.rast b/crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.rast
index ef34702fd..a1d546491 100644
--- a/crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0002_struct_item_field.rast
@@ -1,22 +1,22 @@
1SOURCE_FILE@[0; 25) 1SOURCE_FILE@0..25
2 STRUCT_DEF@[0; 25) 2 STRUCT_DEF@0..25
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 RECORD_FIELD_DEF_LIST@[9; 25) 8 RECORD_FIELD_DEF_LIST@9..25
9 L_CURLY@[9; 10) "{" 9 L_CURLY@9..10 "{"
10 WHITESPACE@[10; 15) "\n " 10 WHITESPACE@10..15 "\n "
11 RECORD_FIELD_DEF@[15; 23) 11 RECORD_FIELD_DEF@15..23
12 NAME@[15; 18) 12 NAME@15..18
13 IDENT@[15; 18) "foo" 13 IDENT@15..18 "foo"
14 COLON@[18; 19) ":" 14 COLON@18..19 ":"
15 WHITESPACE@[19; 20) " " 15 WHITESPACE@19..20 " "
16 PATH_TYPE@[20; 23) 16 PATH_TYPE@20..23
17 PATH@[20; 23) 17 PATH@20..23
18 PATH_SEGMENT@[20; 23) 18 PATH_SEGMENT@20..23
19 NAME_REF@[20; 23) 19 NAME_REF@20..23
20 IDENT@[20; 23) "u32" 20 IDENT@20..23 "u32"
21 WHITESPACE@[23; 24) "\n" 21 WHITESPACE@23..24 "\n"
22 R_CURLY@[24; 25) "}" 22 R_CURLY@24..25 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0004_file_shebang.rast b/crates/ra_syntax/test_data/parser/ok/0004_file_shebang.rast
index e3915c2df..67e21df13 100644
--- a/crates/ra_syntax/test_data/parser/ok/0004_file_shebang.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0004_file_shebang.rast
@@ -1,2 +1,2 @@
1SOURCE_FILE@[0; 20) 1SOURCE_FILE@0..20
2 SHEBANG@[0; 20) "#!/use/bin/env rusti" 2 SHEBANG@0..20 "#!/use/bin/env rusti"
diff --git a/crates/ra_syntax/test_data/parser/ok/0005_fn_item.rast b/crates/ra_syntax/test_data/parser/ok/0005_fn_item.rast
index 955b789b5..993ba72b6 100644
--- a/crates/ra_syntax/test_data/parser/ok/0005_fn_item.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0005_fn_item.rast
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 13) 1SOURCE_FILE@0..13
2 FN_DEF@[0; 12) 2 FN_DEF@0..12
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 12) 11 BLOCK_EXPR@9..12
12 BLOCK@[9; 12) 12 BLOCK@9..12
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 11) "\n" 14 WHITESPACE@10..11 "\n"
15 R_CURLY@[11; 12) "}" 15 R_CURLY@11..12 "}"
16 WHITESPACE@[12; 13) "\n" 16 WHITESPACE@12..13 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.rast b/crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.rast
index 308b5680f..42587243a 100644
--- a/crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0006_inner_attributes.rast
@@ -1,184 +1,184 @@
1SOURCE_FILE@[0; 236) 1SOURCE_FILE@0..236
2 ATTR@[0; 8) 2 ATTR@0..8
3 POUND@[0; 1) "#" 3 POUND@0..1 "#"
4 BANG@[1; 2) "!" 4 BANG@1..2 "!"
5 L_BRACK@[2; 3) "[" 5 L_BRACK@2..3 "["
6 PATH@[3; 7) 6 PATH@3..7
7 PATH_SEGMENT@[3; 7) 7 PATH_SEGMENT@3..7
8 NAME_REF@[3; 7) 8 NAME_REF@3..7
9 IDENT@[3; 7) "attr" 9 IDENT@3..7 "attr"
10 R_BRACK@[7; 8) "]" 10 R_BRACK@7..8 "]"
11 WHITESPACE@[8; 9) "\n" 11 WHITESPACE@8..9 "\n"
12 ATTR@[9; 23) 12 ATTR@9..23
13 POUND@[9; 10) "#" 13 POUND@9..10 "#"
14 BANG@[10; 11) "!" 14 BANG@10..11 "!"
15 L_BRACK@[11; 12) "[" 15 L_BRACK@11..12 "["
16 PATH@[12; 16) 16 PATH@12..16
17 PATH_SEGMENT@[12; 16) 17 PATH_SEGMENT@12..16
18 NAME_REF@[12; 16) 18 NAME_REF@12..16
19 IDENT@[12; 16) "attr" 19 IDENT@12..16 "attr"
20 TOKEN_TREE@[16; 22) 20 TOKEN_TREE@16..22
21 L_PAREN@[16; 17) "(" 21 L_PAREN@16..17 "("
22 TRUE_KW@[17; 21) "true" 22 TRUE_KW@17..21 "true"
23 R_PAREN@[21; 22) ")" 23 R_PAREN@21..22 ")"
24 R_BRACK@[22; 23) "]" 24 R_BRACK@22..23 "]"
25 WHITESPACE@[23; 24) "\n" 25 WHITESPACE@23..24 "\n"
26 ATTR@[24; 39) 26 ATTR@24..39
27 POUND@[24; 25) "#" 27 POUND@24..25 "#"
28 BANG@[25; 26) "!" 28 BANG@25..26 "!"
29 L_BRACK@[26; 27) "[" 29 L_BRACK@26..27 "["
30 PATH@[27; 31) 30 PATH@27..31
31 PATH_SEGMENT@[27; 31) 31 PATH_SEGMENT@27..31
32 NAME_REF@[27; 31) 32 NAME_REF@27..31
33 IDENT@[27; 31) "attr" 33 IDENT@27..31 "attr"
34 TOKEN_TREE@[31; 38) 34 TOKEN_TREE@31..38
35 L_PAREN@[31; 32) "(" 35 L_PAREN@31..32 "("
36 IDENT@[32; 37) "ident" 36 IDENT@32..37 "ident"
37 R_PAREN@[37; 38) ")" 37 R_PAREN@37..38 ")"
38 R_BRACK@[38; 39) "]" 38 R_BRACK@38..39 "]"
39 WHITESPACE@[39; 40) "\n" 39 WHITESPACE@39..40 "\n"
40 ATTR@[40; 116) 40 ATTR@40..116
41 POUND@[40; 41) "#" 41 POUND@40..41 "#"
42 BANG@[41; 42) "!" 42 BANG@41..42 "!"
43 L_BRACK@[42; 43) "[" 43 L_BRACK@42..43 "["
44 PATH@[43; 47) 44 PATH@43..47
45 PATH_SEGMENT@[43; 47) 45 PATH_SEGMENT@43..47
46 NAME_REF@[43; 47) 46 NAME_REF@43..47
47 IDENT@[43; 47) "attr" 47 IDENT@43..47 "attr"
48 TOKEN_TREE@[47; 115) 48 TOKEN_TREE@47..115
49 L_PAREN@[47; 48) "(" 49 L_PAREN@47..48 "("
50 IDENT@[48; 53) "ident" 50 IDENT@48..53 "ident"
51 COMMA@[53; 54) "," 51 COMMA@53..54 ","
52 WHITESPACE@[54; 55) " " 52 WHITESPACE@54..55 " "
53 INT_NUMBER@[55; 58) "100" 53 INT_NUMBER@55..58 "100"
54 COMMA@[58; 59) "," 54 COMMA@58..59 ","
55 WHITESPACE@[59; 60) " " 55 WHITESPACE@59..60 " "
56 TRUE_KW@[60; 64) "true" 56 TRUE_KW@60..64 "true"
57 COMMA@[64; 65) "," 57 COMMA@64..65 ","
58 WHITESPACE@[65; 66) " " 58 WHITESPACE@65..66 " "
59 STRING@[66; 72) "\"true\"" 59 STRING@66..72 "\"true\""
60 COMMA@[72; 73) "," 60 COMMA@72..73 ","
61 WHITESPACE@[73; 74) " " 61 WHITESPACE@73..74 " "
62 IDENT@[74; 79) "ident" 62 IDENT@74..79 "ident"
63 WHITESPACE@[79; 80) " " 63 WHITESPACE@79..80 " "
64 EQ@[80; 81) "=" 64 EQ@80..81 "="
65 WHITESPACE@[81; 82) " " 65 WHITESPACE@81..82 " "
66 INT_NUMBER@[82; 85) "100" 66 INT_NUMBER@82..85 "100"
67 COMMA@[85; 86) "," 67 COMMA@85..86 ","
68 WHITESPACE@[86; 87) " " 68 WHITESPACE@86..87 " "
69 IDENT@[87; 92) "ident" 69 IDENT@87..92 "ident"
70 WHITESPACE@[92; 93) " " 70 WHITESPACE@92..93 " "
71 EQ@[93; 94) "=" 71 EQ@93..94 "="
72 WHITESPACE@[94; 95) " " 72 WHITESPACE@94..95 " "
73 STRING@[95; 102) "\"hello\"" 73 STRING@95..102 "\"hello\""
74 COMMA@[102; 103) "," 74 COMMA@102..103 ","
75 WHITESPACE@[103; 104) " " 75 WHITESPACE@103..104 " "
76 IDENT@[104; 109) "ident" 76 IDENT@104..109 "ident"
77 TOKEN_TREE@[109; 114) 77 TOKEN_TREE@109..114
78 L_PAREN@[109; 110) "(" 78 L_PAREN@109..110 "("
79 INT_NUMBER@[110; 113) "100" 79 INT_NUMBER@110..113 "100"
80 R_PAREN@[113; 114) ")" 80 R_PAREN@113..114 ")"
81 R_PAREN@[114; 115) ")" 81 R_PAREN@114..115 ")"
82 R_BRACK@[115; 116) "]" 82 R_BRACK@115..116 "]"
83 WHITESPACE@[116; 117) "\n" 83 WHITESPACE@116..117 "\n"
84 ATTR@[117; 130) 84 ATTR@117..130
85 POUND@[117; 118) "#" 85 POUND@117..118 "#"
86 BANG@[118; 119) "!" 86 BANG@118..119 "!"
87 L_BRACK@[119; 120) "[" 87 L_BRACK@119..120 "["
88 PATH@[120; 124) 88 PATH@120..124
89 PATH_SEGMENT@[120; 124) 89 PATH_SEGMENT@120..124
90 NAME_REF@[120; 124) 90 NAME_REF@120..124
91 IDENT@[120; 124) "attr" 91 IDENT@120..124 "attr"
92 TOKEN_TREE@[124; 129) 92 TOKEN_TREE@124..129
93 L_PAREN@[124; 125) "(" 93 L_PAREN@124..125 "("
94 INT_NUMBER@[125; 128) "100" 94 INT_NUMBER@125..128 "100"
95 R_PAREN@[128; 129) ")" 95 R_PAREN@128..129 ")"
96 R_BRACK@[129; 130) "]" 96 R_BRACK@129..130 "]"
97 WHITESPACE@[130; 131) "\n" 97 WHITESPACE@130..131 "\n"
98 ATTR@[131; 155) 98 ATTR@131..155
99 POUND@[131; 132) "#" 99 POUND@131..132 "#"
100 BANG@[132; 133) "!" 100 BANG@132..133 "!"
101 L_BRACK@[133; 134) "[" 101 L_BRACK@133..134 "["
102 PATH@[134; 138) 102 PATH@134..138
103 PATH_SEGMENT@[134; 138) 103 PATH_SEGMENT@134..138
104 NAME_REF@[134; 138) 104 NAME_REF@134..138
105 IDENT@[134; 138) "attr" 105 IDENT@134..138 "attr"
106 TOKEN_TREE@[138; 154) 106 TOKEN_TREE@138..154
107 L_PAREN@[138; 139) "(" 107 L_PAREN@138..139 "("
108 IDENT@[139; 146) "enabled" 108 IDENT@139..146 "enabled"
109 WHITESPACE@[146; 147) " " 109 WHITESPACE@146..147 " "
110 EQ@[147; 148) "=" 110 EQ@147..148 "="
111 WHITESPACE@[148; 149) " " 111 WHITESPACE@148..149 " "
112 TRUE_KW@[149; 153) "true" 112 TRUE_KW@149..153 "true"
113 R_PAREN@[153; 154) ")" 113 R_PAREN@153..154 ")"
114 R_BRACK@[154; 155) "]" 114 R_BRACK@154..155 "]"
115 WHITESPACE@[155; 156) "\n" 115 WHITESPACE@155..156 "\n"
116 ATTR@[156; 173) 116 ATTR@156..173
117 POUND@[156; 157) "#" 117 POUND@156..157 "#"
118 BANG@[157; 158) "!" 118 BANG@157..158 "!"
119 L_BRACK@[158; 159) "[" 119 L_BRACK@158..159 "["
120 PATH@[159; 166) 120 PATH@159..166
121 PATH_SEGMENT@[159; 166) 121 PATH_SEGMENT@159..166
122 NAME_REF@[159; 166) 122 NAME_REF@159..166
123 IDENT@[159; 166) "enabled" 123 IDENT@159..166 "enabled"
124 TOKEN_TREE@[166; 172) 124 TOKEN_TREE@166..172
125 L_PAREN@[166; 167) "(" 125 L_PAREN@166..167 "("
126 TRUE_KW@[167; 171) "true" 126 TRUE_KW@167..171 "true"
127 R_PAREN@[171; 172) ")" 127 R_PAREN@171..172 ")"
128 R_BRACK@[172; 173) "]" 128 R_BRACK@172..173 "]"
129 WHITESPACE@[173; 174) "\n" 129 WHITESPACE@173..174 "\n"
130 ATTR@[174; 191) 130 ATTR@174..191
131 POUND@[174; 175) "#" 131 POUND@174..175 "#"
132 BANG@[175; 176) "!" 132 BANG@175..176 "!"
133 L_BRACK@[176; 177) "[" 133 L_BRACK@176..177 "["
134 PATH@[177; 181) 134 PATH@177..181
135 PATH_SEGMENT@[177; 181) 135 PATH_SEGMENT@177..181
136 NAME_REF@[177; 181) 136 NAME_REF@177..181
137 IDENT@[177; 181) "attr" 137 IDENT@177..181 "attr"
138 TOKEN_TREE@[181; 190) 138 TOKEN_TREE@181..190
139 L_PAREN@[181; 182) "(" 139 L_PAREN@181..182 "("
140 STRING@[182; 189) "\"hello\"" 140 STRING@182..189 "\"hello\""
141 R_PAREN@[189; 190) ")" 141 R_PAREN@189..190 ")"
142 R_BRACK@[190; 191) "]" 142 R_BRACK@190..191 "]"
143 WHITESPACE@[191; 192) "\n" 143 WHITESPACE@191..192 "\n"
144 ATTR@[192; 214) 144 ATTR@192..214
145 POUND@[192; 193) "#" 145 POUND@192..193 "#"
146 BANG@[193; 194) "!" 146 BANG@193..194 "!"
147 L_BRACK@[194; 195) "[" 147 L_BRACK@194..195 "["
148 PATH@[195; 199) 148 PATH@195..199
149 PATH_SEGMENT@[195; 199) 149 PATH_SEGMENT@195..199
150 NAME_REF@[195; 199) 150 NAME_REF@195..199
151 IDENT@[195; 199) "repr" 151 IDENT@195..199 "repr"
152 TOKEN_TREE@[199; 213) 152 TOKEN_TREE@199..213
153 L_PAREN@[199; 200) "(" 153 L_PAREN@199..200 "("
154 IDENT@[200; 201) "C" 154 IDENT@200..201 "C"
155 COMMA@[201; 202) "," 155 COMMA@201..202 ","
156 WHITESPACE@[202; 203) " " 156 WHITESPACE@202..203 " "
157 IDENT@[203; 208) "align" 157 IDENT@203..208 "align"
158 WHITESPACE@[208; 209) " " 158 WHITESPACE@208..209 " "
159 EQ@[209; 210) "=" 159 EQ@209..210 "="
160 WHITESPACE@[210; 211) " " 160 WHITESPACE@210..211 " "
161 INT_NUMBER@[211; 212) "4" 161 INT_NUMBER@211..212 "4"
162 R_PAREN@[212; 213) ")" 162 R_PAREN@212..213 ")"
163 R_BRACK@[213; 214) "]" 163 R_BRACK@213..214 "]"
164 WHITESPACE@[214; 215) "\n" 164 WHITESPACE@214..215 "\n"
165 ATTR@[215; 236) 165 ATTR@215..236
166 POUND@[215; 216) "#" 166 POUND@215..216 "#"
167 BANG@[216; 217) "!" 167 BANG@216..217 "!"
168 L_BRACK@[217; 218) "[" 168 L_BRACK@217..218 "["
169 PATH@[218; 222) 169 PATH@218..222
170 PATH_SEGMENT@[218; 222) 170 PATH_SEGMENT@218..222
171 NAME_REF@[218; 222) 171 NAME_REF@218..222
172 IDENT@[218; 222) "repr" 172 IDENT@218..222 "repr"
173 TOKEN_TREE@[222; 235) 173 TOKEN_TREE@222..235
174 L_PAREN@[222; 223) "(" 174 L_PAREN@222..223 "("
175 IDENT@[223; 224) "C" 175 IDENT@223..224 "C"
176 COMMA@[224; 225) "," 176 COMMA@224..225 ","
177 WHITESPACE@[225; 226) " " 177 WHITESPACE@225..226 " "
178 IDENT@[226; 231) "align" 178 IDENT@226..231 "align"
179 TOKEN_TREE@[231; 234) 179 TOKEN_TREE@231..234
180 L_PAREN@[231; 232) "(" 180 L_PAREN@231..232 "("
181 INT_NUMBER@[232; 233) "4" 181 INT_NUMBER@232..233 "4"
182 R_PAREN@[233; 234) ")" 182 R_PAREN@233..234 ")"
183 R_PAREN@[234; 235) ")" 183 R_PAREN@234..235 ")"
184 R_BRACK@[235; 236) "]" 184 R_BRACK@235..236 "]"
diff --git a/crates/ra_syntax/test_data/parser/ok/0007_extern_crate.rast b/crates/ra_syntax/test_data/parser/ok/0007_extern_crate.rast
index 4856b4f81..b5bdf0aa9 100644
--- a/crates/ra_syntax/test_data/parser/ok/0007_extern_crate.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0007_extern_crate.rast
@@ -1,40 +1,40 @@
1SOURCE_FILE@[0; 69) 1SOURCE_FILE@0..69
2 EXTERN_CRATE_ITEM@[0; 17) 2 EXTERN_CRATE_ITEM@0..17
3 EXTERN_KW@[0; 6) "extern" 3 EXTERN_KW@0..6 "extern"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 CRATE_KW@[7; 12) "crate" 5 CRATE_KW@7..12 "crate"
6 WHITESPACE@[12; 13) " " 6 WHITESPACE@12..13 " "
7 NAME_REF@[13; 16) 7 NAME_REF@13..16
8 IDENT@[13; 16) "foo" 8 IDENT@13..16 "foo"
9 SEMICOLON@[16; 17) ";" 9 SEMICOLON@16..17 ";"
10 WHITESPACE@[17; 18) "\n" 10 WHITESPACE@17..18 "\n"
11 EXTERN_CRATE_ITEM@[18; 42) 11 EXTERN_CRATE_ITEM@18..42
12 EXTERN_KW@[18; 24) "extern" 12 EXTERN_KW@18..24 "extern"
13 WHITESPACE@[24; 25) " " 13 WHITESPACE@24..25 " "
14 CRATE_KW@[25; 30) "crate" 14 CRATE_KW@25..30 "crate"
15 WHITESPACE@[30; 31) " " 15 WHITESPACE@30..31 " "
16 NAME_REF@[31; 34) 16 NAME_REF@31..34
17 IDENT@[31; 34) "foo" 17 IDENT@31..34 "foo"
18 WHITESPACE@[34; 35) " " 18 WHITESPACE@34..35 " "
19 ALIAS@[35; 41) 19 ALIAS@35..41
20 AS_KW@[35; 37) "as" 20 AS_KW@35..37 "as"
21 WHITESPACE@[37; 38) " " 21 WHITESPACE@37..38 " "
22 NAME@[38; 41) 22 NAME@38..41
23 IDENT@[38; 41) "bar" 23 IDENT@38..41 "bar"
24 SEMICOLON@[41; 42) ";" 24 SEMICOLON@41..42 ";"
25 WHITESPACE@[42; 43) "\n" 25 WHITESPACE@42..43 "\n"
26 EXTERN_CRATE_ITEM@[43; 68) 26 EXTERN_CRATE_ITEM@43..68
27 EXTERN_KW@[43; 49) "extern" 27 EXTERN_KW@43..49 "extern"
28 WHITESPACE@[49; 50) " " 28 WHITESPACE@49..50 " "
29 CRATE_KW@[50; 55) "crate" 29 CRATE_KW@50..55 "crate"
30 WHITESPACE@[55; 56) " " 30 WHITESPACE@55..56 " "
31 SELF_KW@[56; 60) 31 SELF_KW@56..60
32 SELF_KW@[56; 60) "self" 32 SELF_KW@56..60 "self"
33 WHITESPACE@[60; 61) " " 33 WHITESPACE@60..61 " "
34 ALIAS@[61; 67) 34 ALIAS@61..67
35 AS_KW@[61; 63) "as" 35 AS_KW@61..63 "as"
36 WHITESPACE@[63; 64) " " 36 WHITESPACE@63..64 " "
37 NAME@[64; 67) 37 NAME@64..67
38 IDENT@[64; 67) "baz" 38 IDENT@64..67 "baz"
39 SEMICOLON@[67; 68) ";" 39 SEMICOLON@67..68 ";"
40 WHITESPACE@[68; 69) "\n" 40 WHITESPACE@68..69 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0008_mod_item.rast b/crates/ra_syntax/test_data/parser/ok/0008_mod_item.rast
index 1c18edd4e..353bf2d2e 100644
--- a/crates/ra_syntax/test_data/parser/ok/0008_mod_item.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0008_mod_item.rast
@@ -1,93 +1,93 @@
1SOURCE_FILE@[0; 118) 1SOURCE_FILE@0..118
2 MODULE@[0; 6) 2 MODULE@0..6
3 MOD_KW@[0; 3) "mod" 3 MOD_KW@0..3 "mod"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 NAME@[4; 5) 5 NAME@4..5
6 IDENT@[4; 5) "a" 6 IDENT@4..5 "a"
7 SEMICOLON@[5; 6) ";" 7 SEMICOLON@5..6 ";"
8 WHITESPACE@[6; 8) "\n\n" 8 WHITESPACE@6..8 "\n\n"
9 MODULE@[8; 17) 9 MODULE@8..17
10 MOD_KW@[8; 11) "mod" 10 MOD_KW@8..11 "mod"
11 WHITESPACE@[11; 12) " " 11 WHITESPACE@11..12 " "
12 NAME@[12; 13) 12 NAME@12..13
13 IDENT@[12; 13) "b" 13 IDENT@12..13 "b"
14 WHITESPACE@[13; 14) " " 14 WHITESPACE@13..14 " "
15 ITEM_LIST@[14; 17) 15 ITEM_LIST@14..17
16 L_CURLY@[14; 15) "{" 16 L_CURLY@14..15 "{"
17 WHITESPACE@[15; 16) "\n" 17 WHITESPACE@15..16 "\n"
18 R_CURLY@[16; 17) "}" 18 R_CURLY@16..17 "}"
19 WHITESPACE@[17; 19) "\n\n" 19 WHITESPACE@17..19 "\n\n"
20 MODULE@[19; 65) 20 MODULE@19..65
21 MOD_KW@[19; 22) "mod" 21 MOD_KW@19..22 "mod"
22 WHITESPACE@[22; 23) " " 22 WHITESPACE@22..23 " "
23 NAME@[23; 24) 23 NAME@23..24
24 IDENT@[23; 24) "c" 24 IDENT@23..24 "c"
25 WHITESPACE@[24; 25) " " 25 WHITESPACE@24..25 " "
26 ITEM_LIST@[25; 65) 26 ITEM_LIST@25..65
27 L_CURLY@[25; 26) "{" 27 L_CURLY@25..26 "{"
28 WHITESPACE@[26; 31) "\n " 28 WHITESPACE@26..31 "\n "
29 FN_DEF@[31; 47) 29 FN_DEF@31..47
30 FN_KW@[31; 33) "fn" 30 FN_KW@31..33 "fn"
31 WHITESPACE@[33; 34) " " 31 WHITESPACE@33..34 " "
32 NAME@[34; 37) 32 NAME@34..37
33 IDENT@[34; 37) "foo" 33 IDENT@34..37 "foo"
34 PARAM_LIST@[37; 39) 34 PARAM_LIST@37..39
35 L_PAREN@[37; 38) "(" 35 L_PAREN@37..38 "("
36 R_PAREN@[38; 39) ")" 36 R_PAREN@38..39 ")"
37 WHITESPACE@[39; 40) " " 37 WHITESPACE@39..40 " "
38 BLOCK_EXPR@[40; 47) 38 BLOCK_EXPR@40..47
39 BLOCK@[40; 47) 39 BLOCK@40..47
40 L_CURLY@[40; 41) "{" 40 L_CURLY@40..41 "{"
41 WHITESPACE@[41; 46) "\n " 41 WHITESPACE@41..46 "\n "
42 R_CURLY@[46; 47) "}" 42 R_CURLY@46..47 "}"
43 WHITESPACE@[47; 52) "\n " 43 WHITESPACE@47..52 "\n "
44 STRUCT_DEF@[52; 63) 44 STRUCT_DEF@52..63
45 STRUCT_KW@[52; 58) "struct" 45 STRUCT_KW@52..58 "struct"
46 WHITESPACE@[58; 59) " " 46 WHITESPACE@58..59 " "
47 NAME@[59; 60) 47 NAME@59..60
48 IDENT@[59; 60) "S" 48 IDENT@59..60 "S"
49 WHITESPACE@[60; 61) " " 49 WHITESPACE@60..61 " "
50 RECORD_FIELD_DEF_LIST@[61; 63) 50 RECORD_FIELD_DEF_LIST@61..63
51 L_CURLY@[61; 62) "{" 51 L_CURLY@61..62 "{"
52 R_CURLY@[62; 63) "}" 52 R_CURLY@62..63 "}"
53 WHITESPACE@[63; 64) "\n" 53 WHITESPACE@63..64 "\n"
54 R_CURLY@[64; 65) "}" 54 R_CURLY@64..65 "}"
55 WHITESPACE@[65; 67) "\n\n" 55 WHITESPACE@65..67 "\n\n"
56 MODULE@[67; 118) 56 MODULE@67..118
57 MOD_KW@[67; 70) "mod" 57 MOD_KW@67..70 "mod"
58 WHITESPACE@[70; 71) " " 58 WHITESPACE@70..71 " "
59 NAME@[71; 72) 59 NAME@71..72
60 IDENT@[71; 72) "d" 60 IDENT@71..72 "d"
61 WHITESPACE@[72; 73) " " 61 WHITESPACE@72..73 " "
62 ITEM_LIST@[73; 118) 62 ITEM_LIST@73..118
63 L_CURLY@[73; 74) "{" 63 L_CURLY@73..74 "{"
64 WHITESPACE@[74; 79) "\n " 64 WHITESPACE@74..79 "\n "
65 ATTR@[79; 87) 65 ATTR@79..87
66 POUND@[79; 80) "#" 66 POUND@79..80 "#"
67 BANG@[80; 81) "!" 67 BANG@80..81 "!"
68 L_BRACK@[81; 82) "[" 68 L_BRACK@81..82 "["
69 PATH@[82; 86) 69 PATH@82..86
70 PATH_SEGMENT@[82; 86) 70 PATH_SEGMENT@82..86
71 NAME_REF@[82; 86) 71 NAME_REF@82..86
72 IDENT@[82; 86) "attr" 72 IDENT@82..86 "attr"
73 R_BRACK@[86; 87) "]" 73 R_BRACK@86..87 "]"
74 WHITESPACE@[87; 92) "\n " 74 WHITESPACE@87..92 "\n "
75 MODULE@[92; 98) 75 MODULE@92..98
76 MOD_KW@[92; 95) "mod" 76 MOD_KW@92..95 "mod"
77 WHITESPACE@[95; 96) " " 77 WHITESPACE@95..96 " "
78 NAME@[96; 97) 78 NAME@96..97
79 IDENT@[96; 97) "e" 79 IDENT@96..97 "e"
80 SEMICOLON@[97; 98) ";" 80 SEMICOLON@97..98 ";"
81 WHITESPACE@[98; 103) "\n " 81 WHITESPACE@98..103 "\n "
82 MODULE@[103; 116) 82 MODULE@103..116
83 MOD_KW@[103; 106) "mod" 83 MOD_KW@103..106 "mod"
84 WHITESPACE@[106; 107) " " 84 WHITESPACE@106..107 " "
85 NAME@[107; 108) 85 NAME@107..108
86 IDENT@[107; 108) "f" 86 IDENT@107..108 "f"
87 WHITESPACE@[108; 109) " " 87 WHITESPACE@108..109 " "
88 ITEM_LIST@[109; 116) 88 ITEM_LIST@109..116
89 L_CURLY@[109; 110) "{" 89 L_CURLY@109..110 "{"
90 WHITESPACE@[110; 115) "\n " 90 WHITESPACE@110..115 "\n "
91 R_CURLY@[115; 116) "}" 91 R_CURLY@115..116 "}"
92 WHITESPACE@[116; 117) "\n" 92 WHITESPACE@116..117 "\n"
93 R_CURLY@[117; 118) "}" 93 R_CURLY@117..118 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0009_use_item.rast b/crates/ra_syntax/test_data/parser/ok/0009_use_item.rast
index 62a8ae433..96b8a94fc 100644
--- a/crates/ra_syntax/test_data/parser/ok/0009_use_item.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0009_use_item.rast
@@ -1,21 +1,21 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@0..19
2 USE_ITEM@[0; 8) 2 USE_ITEM@0..8
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 7) 5 USE_TREE@4..7
6 PATH@[4; 7) 6 PATH@4..7
7 PATH_SEGMENT@[4; 7) 7 PATH_SEGMENT@4..7
8 NAME_REF@[4; 7) 8 NAME_REF@4..7
9 IDENT@[4; 7) "foo" 9 IDENT@4..7 "foo"
10 SEMICOLON@[7; 8) ";" 10 SEMICOLON@7..8 ";"
11 WHITESPACE@[8; 9) "\n" 11 WHITESPACE@8..9 "\n"
12 USE_ITEM@[9; 19) 12 USE_ITEM@9..19
13 USE_KW@[9; 12) "use" 13 USE_KW@9..12 "use"
14 WHITESPACE@[12; 13) " " 14 WHITESPACE@12..13 " "
15 USE_TREE@[13; 18) 15 USE_TREE@13..18
16 PATH@[13; 18) 16 PATH@13..18
17 PATH_SEGMENT@[13; 18) 17 PATH_SEGMENT@13..18
18 COLON2@[13; 15) "::" 18 COLON2@13..15 "::"
19 NAME_REF@[15; 18) 19 NAME_REF@15..18
20 IDENT@[15; 18) "bar" 20 IDENT@15..18 "bar"
21 SEMICOLON@[18; 19) ";" 21 SEMICOLON@18..19 ";"
diff --git a/crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.rast b/crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.rast
index f2689e1ed..07272dc3c 100644
--- a/crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0010_use_path_segments.rast
@@ -1,42 +1,42 @@
1SOURCE_FILE@[0; 40) 1SOURCE_FILE@0..40
2 USE_ITEM@[0; 20) 2 USE_ITEM@0..20
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 19) 5 USE_TREE@4..19
6 PATH@[4; 19) 6 PATH@4..19
7 PATH@[4; 14) 7 PATH@4..14
8 PATH@[4; 9) 8 PATH@4..9
9 PATH_SEGMENT@[4; 9) 9 PATH_SEGMENT@4..9
10 COLON2@[4; 6) "::" 10 COLON2@4..6 "::"
11 NAME_REF@[6; 9) 11 NAME_REF@6..9
12 IDENT@[6; 9) "foo" 12 IDENT@6..9 "foo"
13 COLON2@[9; 11) "::" 13 COLON2@9..11 "::"
14 PATH_SEGMENT@[11; 14) 14 PATH_SEGMENT@11..14
15 NAME_REF@[11; 14) 15 NAME_REF@11..14
16 IDENT@[11; 14) "bar" 16 IDENT@11..14 "bar"
17 COLON2@[14; 16) "::" 17 COLON2@14..16 "::"
18 PATH_SEGMENT@[16; 19) 18 PATH_SEGMENT@16..19
19 NAME_REF@[16; 19) 19 NAME_REF@16..19
20 IDENT@[16; 19) "baz" 20 IDENT@16..19 "baz"
21 SEMICOLON@[19; 20) ";" 21 SEMICOLON@19..20 ";"
22 WHITESPACE@[20; 21) "\n" 22 WHITESPACE@20..21 "\n"
23 USE_ITEM@[21; 39) 23 USE_ITEM@21..39
24 USE_KW@[21; 24) "use" 24 USE_KW@21..24 "use"
25 WHITESPACE@[24; 25) " " 25 WHITESPACE@24..25 " "
26 USE_TREE@[25; 38) 26 USE_TREE@25..38
27 PATH@[25; 38) 27 PATH@25..38
28 PATH@[25; 33) 28 PATH@25..33
29 PATH@[25; 28) 29 PATH@25..28
30 PATH_SEGMENT@[25; 28) 30 PATH_SEGMENT@25..28
31 NAME_REF@[25; 28) 31 NAME_REF@25..28
32 IDENT@[25; 28) "foo" 32 IDENT@25..28 "foo"
33 COLON2@[28; 30) "::" 33 COLON2@28..30 "::"
34 PATH_SEGMENT@[30; 33) 34 PATH_SEGMENT@30..33
35 NAME_REF@[30; 33) 35 NAME_REF@30..33
36 IDENT@[30; 33) "bar" 36 IDENT@30..33 "bar"
37 COLON2@[33; 35) "::" 37 COLON2@33..35 "::"
38 PATH_SEGMENT@[35; 38) 38 PATH_SEGMENT@35..38
39 NAME_REF@[35; 38) 39 NAME_REF@35..38
40 IDENT@[35; 38) "baz" 40 IDENT@35..38 "baz"
41 SEMICOLON@[38; 39) ";" 41 SEMICOLON@38..39 ";"
42 WHITESPACE@[39; 40) "\n" 42 WHITESPACE@39..40 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.rast b/crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.rast
index 4426d586a..3919cc78b 100644
--- a/crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.rast
@@ -1,58 +1,58 @@
1SOURCE_FILE@[0; 60) 1SOURCE_FILE@0..60
2 FN_DEF@[0; 34) 2 FN_DEF@0..34
3 ATTR@[0; 12) 3 ATTR@0..12
4 POUND@[0; 1) "#" 4 POUND@0..1 "#"
5 L_BRACK@[1; 2) "[" 5 L_BRACK@1..2 "["
6 PATH@[2; 5) 6 PATH@2..5
7 PATH_SEGMENT@[2; 5) 7 PATH_SEGMENT@2..5
8 NAME_REF@[2; 5) 8 NAME_REF@2..5
9 IDENT@[2; 5) "cfg" 9 IDENT@2..5 "cfg"
10 TOKEN_TREE@[5; 11) 10 TOKEN_TREE@5..11
11 L_PAREN@[5; 6) "(" 11 L_PAREN@5..6 "("
12 IDENT@[6; 10) "test" 12 IDENT@6..10 "test"
13 R_PAREN@[10; 11) ")" 13 R_PAREN@10..11 ")"
14 R_BRACK@[11; 12) "]" 14 R_BRACK@11..12 "]"
15 WHITESPACE@[12; 13) "\n" 15 WHITESPACE@12..13 "\n"
16 ATTR@[13; 22) 16 ATTR@13..22
17 POUND@[13; 14) "#" 17 POUND@13..14 "#"
18 L_BRACK@[14; 15) "[" 18 L_BRACK@14..15 "["
19 PATH@[15; 21) 19 PATH@15..21
20 PATH_SEGMENT@[15; 21) 20 PATH_SEGMENT@15..21
21 NAME_REF@[15; 21) 21 NAME_REF@15..21
22 IDENT@[15; 21) "ignore" 22 IDENT@15..21 "ignore"
23 R_BRACK@[21; 22) "]" 23 R_BRACK@21..22 "]"
24 WHITESPACE@[22; 23) "\n" 24 WHITESPACE@22..23 "\n"
25 FN_KW@[23; 25) "fn" 25 FN_KW@23..25 "fn"
26 WHITESPACE@[25; 26) " " 26 WHITESPACE@25..26 " "
27 NAME@[26; 29) 27 NAME@26..29
28 IDENT@[26; 29) "foo" 28 IDENT@26..29 "foo"
29 PARAM_LIST@[29; 31) 29 PARAM_LIST@29..31
30 L_PAREN@[29; 30) "(" 30 L_PAREN@29..30 "("
31 R_PAREN@[30; 31) ")" 31 R_PAREN@30..31 ")"
32 WHITESPACE@[31; 32) " " 32 WHITESPACE@31..32 " "
33 BLOCK_EXPR@[32; 34) 33 BLOCK_EXPR@32..34
34 BLOCK@[32; 34) 34 BLOCK@32..34
35 L_CURLY@[32; 33) "{" 35 L_CURLY@32..33 "{"
36 R_CURLY@[33; 34) "}" 36 R_CURLY@33..34 "}"
37 WHITESPACE@[34; 36) "\n\n" 37 WHITESPACE@34..36 "\n\n"
38 MODULE@[36; 59) 38 MODULE@36..59
39 ATTR@[36; 52) 39 ATTR@36..52
40 POUND@[36; 37) "#" 40 POUND@36..37 "#"
41 L_BRACK@[37; 38) "[" 41 L_BRACK@37..38 "["
42 PATH@[38; 42) 42 PATH@38..42
43 PATH_SEGMENT@[38; 42) 43 PATH_SEGMENT@38..42
44 NAME_REF@[38; 42) 44 NAME_REF@38..42
45 IDENT@[38; 42) "path" 45 IDENT@38..42 "path"
46 WHITESPACE@[42; 43) " " 46 WHITESPACE@42..43 " "
47 EQ@[43; 44) "=" 47 EQ@43..44 "="
48 WHITESPACE@[44; 45) " " 48 WHITESPACE@44..45 " "
49 LITERAL@[45; 51) 49 LITERAL@45..51
50 STRING@[45; 51) "\"a.rs\"" 50 STRING@45..51 "\"a.rs\""
51 R_BRACK@[51; 52) "]" 51 R_BRACK@51..52 "]"
52 WHITESPACE@[52; 53) "\n" 52 WHITESPACE@52..53 "\n"
53 MOD_KW@[53; 56) "mod" 53 MOD_KW@53..56 "mod"
54 WHITESPACE@[56; 57) " " 54 WHITESPACE@56..57 " "
55 NAME@[57; 58) 55 NAME@57..58
56 IDENT@[57; 58) "b" 56 IDENT@57..58 "b"
57 SEMICOLON@[58; 59) ";" 57 SEMICOLON@58..59 ";"
58 WHITESPACE@[59; 60) "\n" 58 WHITESPACE@59..60 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0012_visibility.rast b/crates/ra_syntax/test_data/parser/ok/0012_visibility.rast
index c76cf9fe9..750a045ef 100644
--- a/crates/ra_syntax/test_data/parser/ok/0012_visibility.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0012_visibility.rast
@@ -1,107 +1,107 @@
1SOURCE_FILE@[0; 98) 1SOURCE_FILE@0..98
2 FN_DEF@[0; 9) 2 FN_DEF@0..9
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 4) 5 NAME@3..4
6 IDENT@[3; 4) "a" 6 IDENT@3..4 "a"
7 PARAM_LIST@[4; 6) 7 PARAM_LIST@4..6
8 L_PAREN@[4; 5) "(" 8 L_PAREN@4..5 "("
9 R_PAREN@[5; 6) ")" 9 R_PAREN@5..6 ")"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 BLOCK_EXPR@[7; 9) 11 BLOCK_EXPR@7..9
12 BLOCK@[7; 9) 12 BLOCK@7..9
13 L_CURLY@[7; 8) "{" 13 L_CURLY@7..8 "{"
14 R_CURLY@[8; 9) "}" 14 R_CURLY@8..9 "}"
15 WHITESPACE@[9; 10) "\n" 15 WHITESPACE@9..10 "\n"
16 FN_DEF@[10; 23) 16 FN_DEF@10..23
17 VISIBILITY@[10; 13) 17 VISIBILITY@10..13
18 PUB_KW@[10; 13) "pub" 18 PUB_KW@10..13 "pub"
19 WHITESPACE@[13; 14) " " 19 WHITESPACE@13..14 " "
20 FN_KW@[14; 16) "fn" 20 FN_KW@14..16 "fn"
21 WHITESPACE@[16; 17) " " 21 WHITESPACE@16..17 " "
22 NAME@[17; 18) 22 NAME@17..18
23 IDENT@[17; 18) "b" 23 IDENT@17..18 "b"
24 PARAM_LIST@[18; 20) 24 PARAM_LIST@18..20
25 L_PAREN@[18; 19) "(" 25 L_PAREN@18..19 "("
26 R_PAREN@[19; 20) ")" 26 R_PAREN@19..20 ")"
27 WHITESPACE@[20; 21) " " 27 WHITESPACE@20..21 " "
28 BLOCK_EXPR@[21; 23) 28 BLOCK_EXPR@21..23
29 BLOCK@[21; 23) 29 BLOCK@21..23
30 L_CURLY@[21; 22) "{" 30 L_CURLY@21..22 "{"
31 R_CURLY@[22; 23) "}" 31 R_CURLY@22..23 "}"
32 WHITESPACE@[23; 24) "\n" 32 WHITESPACE@23..24 "\n"
33 FN_DEF@[24; 44) 33 FN_DEF@24..44
34 VISIBILITY@[24; 34) 34 VISIBILITY@24..34
35 PUB_KW@[24; 27) "pub" 35 PUB_KW@24..27 "pub"
36 L_PAREN@[27; 28) "(" 36 L_PAREN@27..28 "("
37 CRATE_KW@[28; 33) "crate" 37 CRATE_KW@28..33 "crate"
38 R_PAREN@[33; 34) ")" 38 R_PAREN@33..34 ")"
39 WHITESPACE@[34; 35) " " 39 WHITESPACE@34..35 " "
40 FN_KW@[35; 37) "fn" 40 FN_KW@35..37 "fn"
41 WHITESPACE@[37; 38) " " 41 WHITESPACE@37..38 " "
42 NAME@[38; 39) 42 NAME@38..39
43 IDENT@[38; 39) "c" 43 IDENT@38..39 "c"
44 PARAM_LIST@[39; 41) 44 PARAM_LIST@39..41
45 L_PAREN@[39; 40) "(" 45 L_PAREN@39..40 "("
46 R_PAREN@[40; 41) ")" 46 R_PAREN@40..41 ")"
47 WHITESPACE@[41; 42) " " 47 WHITESPACE@41..42 " "
48 BLOCK_EXPR@[42; 44) 48 BLOCK_EXPR@42..44
49 BLOCK@[42; 44) 49 BLOCK@42..44
50 L_CURLY@[42; 43) "{" 50 L_CURLY@42..43 "{"
51 R_CURLY@[43; 44) "}" 51 R_CURLY@43..44 "}"
52 WHITESPACE@[44; 45) "\n" 52 WHITESPACE@44..45 "\n"
53 FN_DEF@[45; 65) 53 FN_DEF@45..65
54 VISIBILITY@[45; 55) 54 VISIBILITY@45..55
55 PUB_KW@[45; 48) "pub" 55 PUB_KW@45..48 "pub"
56 L_PAREN@[48; 49) "(" 56 L_PAREN@48..49 "("
57 SUPER_KW@[49; 54) "super" 57 SUPER_KW@49..54 "super"
58 R_PAREN@[54; 55) ")" 58 R_PAREN@54..55 ")"
59 WHITESPACE@[55; 56) " " 59 WHITESPACE@55..56 " "
60 FN_KW@[56; 58) "fn" 60 FN_KW@56..58 "fn"
61 WHITESPACE@[58; 59) " " 61 WHITESPACE@58..59 " "
62 NAME@[59; 60) 62 NAME@59..60
63 IDENT@[59; 60) "d" 63 IDENT@59..60 "d"
64 PARAM_LIST@[60; 62) 64 PARAM_LIST@60..62
65 L_PAREN@[60; 61) "(" 65 L_PAREN@60..61 "("
66 R_PAREN@[61; 62) ")" 66 R_PAREN@61..62 ")"
67 WHITESPACE@[62; 63) " " 67 WHITESPACE@62..63 " "
68 BLOCK_EXPR@[63; 65) 68 BLOCK_EXPR@63..65
69 BLOCK@[63; 65) 69 BLOCK@63..65
70 L_CURLY@[63; 64) "{" 70 L_CURLY@63..64 "{"
71 R_CURLY@[64; 65) "}" 71 R_CURLY@64..65 "}"
72 WHITESPACE@[65; 66) "\n" 72 WHITESPACE@65..66 "\n"
73 FN_DEF@[66; 97) 73 FN_DEF@66..97
74 VISIBILITY@[66; 87) 74 VISIBILITY@66..87
75 PUB_KW@[66; 69) "pub" 75 PUB_KW@66..69 "pub"
76 L_PAREN@[69; 70) "(" 76 L_PAREN@69..70 "("
77 IN_KW@[70; 72) "in" 77 IN_KW@70..72 "in"
78 WHITESPACE@[72; 73) " " 78 WHITESPACE@72..73 " "
79 PATH@[73; 86) 79 PATH@73..86
80 PATH@[73; 81) 80 PATH@73..81
81 PATH@[73; 76) 81 PATH@73..76
82 PATH_SEGMENT@[73; 76) 82 PATH_SEGMENT@73..76
83 NAME_REF@[73; 76) 83 NAME_REF@73..76
84 IDENT@[73; 76) "foo" 84 IDENT@73..76 "foo"
85 COLON2@[76; 78) "::" 85 COLON2@76..78 "::"
86 PATH_SEGMENT@[78; 81) 86 PATH_SEGMENT@78..81
87 NAME_REF@[78; 81) 87 NAME_REF@78..81
88 IDENT@[78; 81) "bar" 88 IDENT@78..81 "bar"
89 COLON2@[81; 83) "::" 89 COLON2@81..83 "::"
90 PATH_SEGMENT@[83; 86) 90 PATH_SEGMENT@83..86
91 NAME_REF@[83; 86) 91 NAME_REF@83..86
92 IDENT@[83; 86) "baz" 92 IDENT@83..86 "baz"
93 R_PAREN@[86; 87) ")" 93 R_PAREN@86..87 ")"
94 WHITESPACE@[87; 88) " " 94 WHITESPACE@87..88 " "
95 FN_KW@[88; 90) "fn" 95 FN_KW@88..90 "fn"
96 WHITESPACE@[90; 91) " " 96 WHITESPACE@90..91 " "
97 NAME@[91; 92) 97 NAME@91..92
98 IDENT@[91; 92) "e" 98 IDENT@91..92 "e"
99 PARAM_LIST@[92; 94) 99 PARAM_LIST@92..94
100 L_PAREN@[92; 93) "(" 100 L_PAREN@92..93 "("
101 R_PAREN@[93; 94) ")" 101 R_PAREN@93..94 ")"
102 WHITESPACE@[94; 95) " " 102 WHITESPACE@94..95 " "
103 BLOCK_EXPR@[95; 97) 103 BLOCK_EXPR@95..97
104 BLOCK@[95; 97) 104 BLOCK@95..97
105 L_CURLY@[95; 96) "{" 105 L_CURLY@95..96 "{"
106 R_CURLY@[96; 97) "}" 106 R_CURLY@96..97 "}"
107 WHITESPACE@[97; 98) "\n" 107 WHITESPACE@97..98 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.rast b/crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.rast
index 552cb3daf..a5a90df7b 100644
--- a/crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0013_use_path_self_super.rast
@@ -1,57 +1,57 @@
1SOURCE_FILE@[0; 65) 1SOURCE_FILE@0..65
2 USE_ITEM@[0; 14) 2 USE_ITEM@0..14
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 13) 5 USE_TREE@4..13
6 PATH@[4; 13) 6 PATH@4..13
7 PATH@[4; 8) 7 PATH@4..8
8 PATH_SEGMENT@[4; 8) 8 PATH_SEGMENT@4..8
9 SELF_KW@[4; 8) "self" 9 SELF_KW@4..8 "self"
10 COLON2@[8; 10) "::" 10 COLON2@8..10 "::"
11 PATH_SEGMENT@[10; 13) 11 PATH_SEGMENT@10..13
12 NAME_REF@[10; 13) 12 NAME_REF@10..13
13 IDENT@[10; 13) "foo" 13 IDENT@10..13 "foo"
14 SEMICOLON@[13; 14) ";" 14 SEMICOLON@13..14 ";"
15 WHITESPACE@[14; 15) "\n" 15 WHITESPACE@14..15 "\n"
16 USE_ITEM@[15; 37) 16 USE_ITEM@15..37
17 USE_KW@[15; 18) "use" 17 USE_KW@15..18 "use"
18 WHITESPACE@[18; 19) " " 18 WHITESPACE@18..19 " "
19 USE_TREE@[19; 36) 19 USE_TREE@19..36
20 PATH@[19; 36) 20 PATH@19..36
21 PATH@[19; 31) 21 PATH@19..31
22 PATH@[19; 24) 22 PATH@19..24
23 PATH_SEGMENT@[19; 24) 23 PATH_SEGMENT@19..24
24 SUPER_KW@[19; 24) "super" 24 SUPER_KW@19..24 "super"
25 COLON2@[24; 26) "::" 25 COLON2@24..26 "::"
26 PATH_SEGMENT@[26; 31) 26 PATH_SEGMENT@26..31
27 SUPER_KW@[26; 31) "super" 27 SUPER_KW@26..31 "super"
28 COLON2@[31; 33) "::" 28 COLON2@31..33 "::"
29 PATH_SEGMENT@[33; 36) 29 PATH_SEGMENT@33..36
30 NAME_REF@[33; 36) 30 NAME_REF@33..36
31 IDENT@[33; 36) "bar" 31 IDENT@33..36 "bar"
32 SEMICOLON@[36; 37) ";" 32 SEMICOLON@36..37 ";"
33 WHITESPACE@[37; 38) "\n" 33 WHITESPACE@37..38 "\n"
34 USE_ITEM@[38; 64) 34 USE_ITEM@38..64
35 USE_KW@[38; 41) "use" 35 USE_KW@38..41 "use"
36 WHITESPACE@[41; 42) " " 36 WHITESPACE@41..42 " "
37 USE_TREE@[42; 63) 37 USE_TREE@42..63
38 PATH@[42; 63) 38 PATH@42..63
39 PATH@[42; 58) 39 PATH@42..58
40 PATH@[42; 51) 40 PATH@42..51
41 PATH@[42; 48) 41 PATH@42..48
42 PATH_SEGMENT@[42; 48) 42 PATH_SEGMENT@42..48
43 COLON2@[42; 44) "::" 43 COLON2@42..44 "::"
44 SELF_KW@[44; 48) "self" 44 SELF_KW@44..48 "self"
45 COLON2@[48; 50) "::" 45 COLON2@48..50 "::"
46 PATH_SEGMENT@[50; 51) 46 PATH_SEGMENT@50..51
47 NAME_REF@[50; 51) 47 NAME_REF@50..51
48 IDENT@[50; 51) "a" 48 IDENT@50..51 "a"
49 COLON2@[51; 53) "::" 49 COLON2@51..53 "::"
50 PATH_SEGMENT@[53; 58) 50 PATH_SEGMENT@53..58
51 SUPER_KW@[53; 58) "super" 51 SUPER_KW@53..58 "super"
52 COLON2@[58; 60) "::" 52 COLON2@58..60 "::"
53 PATH_SEGMENT@[60; 63) 53 PATH_SEGMENT@60..63
54 NAME_REF@[60; 63) 54 NAME_REF@60..63
55 IDENT@[60; 63) "bar" 55 IDENT@60..63 "bar"
56 SEMICOLON@[63; 64) ";" 56 SEMICOLON@63..64 ";"
57 WHITESPACE@[64; 65) "\n" 57 WHITESPACE@64..65 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0014_use_tree.rast b/crates/ra_syntax/test_data/parser/ok/0014_use_tree.rast
index 49a68e881..3642c107b 100644
--- a/crates/ra_syntax/test_data/parser/ok/0014_use_tree.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0014_use_tree.rast
@@ -1,95 +1,95 @@
1SOURCE_FILE@[0; 81) 1SOURCE_FILE@0..81
2 USE_ITEM@[0; 6) 2 USE_ITEM@0..6
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 5) 5 USE_TREE@4..5
6 STAR@[4; 5) "*" 6 STAR@4..5 "*"
7 SEMICOLON@[5; 6) ";" 7 SEMICOLON@5..6 ";"
8 WHITESPACE@[6; 7) "\n" 8 WHITESPACE@6..7 "\n"
9 USE_ITEM@[7; 15) 9 USE_ITEM@7..15
10 USE_KW@[7; 10) "use" 10 USE_KW@7..10 "use"
11 WHITESPACE@[10; 11) " " 11 WHITESPACE@10..11 " "
12 USE_TREE@[11; 14) 12 USE_TREE@11..14
13 COLON2@[11; 13) "::" 13 COLON2@11..13 "::"
14 STAR@[13; 14) "*" 14 STAR@13..14 "*"
15 SEMICOLON@[14; 15) ";" 15 SEMICOLON@14..15 ";"
16 WHITESPACE@[15; 16) "\n" 16 WHITESPACE@15..16 "\n"
17 USE_ITEM@[16; 25) 17 USE_ITEM@16..25
18 USE_KW@[16; 19) "use" 18 USE_KW@16..19 "use"
19 WHITESPACE@[19; 20) " " 19 WHITESPACE@19..20 " "
20 USE_TREE@[20; 24) 20 USE_TREE@20..24
21 COLON2@[20; 22) "::" 21 COLON2@20..22 "::"
22 USE_TREE_LIST@[22; 24) 22 USE_TREE_LIST@22..24
23 L_CURLY@[22; 23) "{" 23 L_CURLY@22..23 "{"
24 R_CURLY@[23; 24) "}" 24 R_CURLY@23..24 "}"
25 SEMICOLON@[24; 25) ";" 25 SEMICOLON@24..25 ";"
26 WHITESPACE@[25; 26) "\n" 26 WHITESPACE@25..26 "\n"
27 USE_ITEM@[26; 33) 27 USE_ITEM@26..33
28 USE_KW@[26; 29) "use" 28 USE_KW@26..29 "use"
29 WHITESPACE@[29; 30) " " 29 WHITESPACE@29..30 " "
30 USE_TREE@[30; 32) 30 USE_TREE@30..32
31 USE_TREE_LIST@[30; 32) 31 USE_TREE_LIST@30..32
32 L_CURLY@[30; 31) "{" 32 L_CURLY@30..31 "{"
33 R_CURLY@[31; 32) "}" 33 R_CURLY@31..32 "}"
34 SEMICOLON@[32; 33) ";" 34 SEMICOLON@32..33 ";"
35 WHITESPACE@[33; 34) "\n" 35 WHITESPACE@33..34 "\n"
36 USE_ITEM@[34; 45) 36 USE_ITEM@34..45
37 USE_KW@[34; 37) "use" 37 USE_KW@34..37 "use"
38 WHITESPACE@[37; 38) " " 38 WHITESPACE@37..38 " "
39 USE_TREE@[38; 44) 39 USE_TREE@38..44
40 PATH@[38; 41) 40 PATH@38..41
41 PATH_SEGMENT@[38; 41) 41 PATH_SEGMENT@38..41
42 NAME_REF@[38; 41) 42 NAME_REF@38..41
43 IDENT@[38; 41) "foo" 43 IDENT@38..41 "foo"
44 COLON2@[41; 43) "::" 44 COLON2@41..43 "::"
45 STAR@[43; 44) "*" 45 STAR@43..44 "*"
46 SEMICOLON@[44; 45) ";" 46 SEMICOLON@44..45 ";"
47 WHITESPACE@[45; 46) "\n" 47 WHITESPACE@45..46 "\n"
48 USE_ITEM@[46; 58) 48 USE_ITEM@46..58
49 USE_KW@[46; 49) "use" 49 USE_KW@46..49 "use"
50 WHITESPACE@[49; 50) " " 50 WHITESPACE@49..50 " "
51 USE_TREE@[50; 57) 51 USE_TREE@50..57
52 PATH@[50; 53) 52 PATH@50..53
53 PATH_SEGMENT@[50; 53) 53 PATH_SEGMENT@50..53
54 NAME_REF@[50; 53) 54 NAME_REF@50..53
55 IDENT@[50; 53) "foo" 55 IDENT@50..53 "foo"
56 COLON2@[53; 55) "::" 56 COLON2@53..55 "::"
57 USE_TREE_LIST@[55; 57) 57 USE_TREE_LIST@55..57
58 L_CURLY@[55; 56) "{" 58 L_CURLY@55..56 "{"
59 R_CURLY@[56; 57) "}" 59 R_CURLY@56..57 "}"
60 SEMICOLON@[57; 58) ";" 60 SEMICOLON@57..58 ";"
61 WHITESPACE@[58; 59) "\n" 61 WHITESPACE@58..59 "\n"
62 USE_ITEM@[59; 80) 62 USE_ITEM@59..80
63 USE_KW@[59; 62) "use" 63 USE_KW@59..62 "use"
64 WHITESPACE@[62; 63) " " 64 WHITESPACE@62..63 " "
65 USE_TREE@[63; 79) 65 USE_TREE@63..79
66 PATH@[63; 68) 66 PATH@63..68
67 PATH_SEGMENT@[63; 68) 67 PATH_SEGMENT@63..68
68 COLON2@[63; 65) "::" 68 COLON2@63..65 "::"
69 NAME_REF@[65; 68) 69 NAME_REF@65..68
70 IDENT@[65; 68) "foo" 70 IDENT@65..68 "foo"
71 COLON2@[68; 70) "::" 71 COLON2@68..70 "::"
72 USE_TREE_LIST@[70; 79) 72 USE_TREE_LIST@70..79
73 L_CURLY@[70; 71) "{" 73 L_CURLY@70..71 "{"
74 USE_TREE@[71; 72) 74 USE_TREE@71..72
75 PATH@[71; 72) 75 PATH@71..72
76 PATH_SEGMENT@[71; 72) 76 PATH_SEGMENT@71..72
77 NAME_REF@[71; 72) 77 NAME_REF@71..72
78 IDENT@[71; 72) "a" 78 IDENT@71..72 "a"
79 COMMA@[72; 73) "," 79 COMMA@72..73 ","
80 WHITESPACE@[73; 74) " " 80 WHITESPACE@73..74 " "
81 USE_TREE@[74; 75) 81 USE_TREE@74..75
82 PATH@[74; 75) 82 PATH@74..75
83 PATH_SEGMENT@[74; 75) 83 PATH_SEGMENT@74..75
84 NAME_REF@[74; 75) 84 NAME_REF@74..75
85 IDENT@[74; 75) "b" 85 IDENT@74..75 "b"
86 COMMA@[75; 76) "," 86 COMMA@75..76 ","
87 WHITESPACE@[76; 77) " " 87 WHITESPACE@76..77 " "
88 USE_TREE@[77; 78) 88 USE_TREE@77..78
89 PATH@[77; 78) 89 PATH@77..78
90 PATH_SEGMENT@[77; 78) 90 PATH_SEGMENT@77..78
91 NAME_REF@[77; 78) 91 NAME_REF@77..78
92 IDENT@[77; 78) "c" 92 IDENT@77..78 "c"
93 R_CURLY@[78; 79) "}" 93 R_CURLY@78..79 "}"
94 SEMICOLON@[79; 80) ";" 94 SEMICOLON@79..80 ";"
95 WHITESPACE@[80; 81) "\n" 95 WHITESPACE@80..81 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0015_use_tree.rast b/crates/ra_syntax/test_data/parser/ok/0015_use_tree.rast
index 719ac98ef..09e0050f0 100644
--- a/crates/ra_syntax/test_data/parser/ok/0015_use_tree.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0015_use_tree.rast
@@ -1,65 +1,65 @@
1SOURCE_FILE@[0; 55) 1SOURCE_FILE@0..55
2 USE_ITEM@[0; 15) 2 USE_ITEM@0..15
3 USE_KW@[0; 3) "use" 3 USE_KW@0..3 "use"
4 WHITESPACE@[3; 4) " " 4 WHITESPACE@3..4 " "
5 USE_TREE@[4; 14) 5 USE_TREE@4..14
6 PATH@[4; 7) 6 PATH@4..7
7 PATH_SEGMENT@[4; 7) 7 PATH_SEGMENT@4..7
8 NAME_REF@[4; 7) 8 NAME_REF@4..7
9 IDENT@[4; 7) "foo" 9 IDENT@4..7 "foo"
10 WHITESPACE@[7; 8) " " 10 WHITESPACE@7..8 " "
11 ALIAS@[8; 14) 11 ALIAS@8..14
12 AS_KW@[8; 10) "as" 12 AS_KW@8..10 "as"
13 WHITESPACE@[10; 11) " " 13 WHITESPACE@10..11 " "
14 NAME@[11; 14) 14 NAME@11..14
15 IDENT@[11; 14) "bar" 15 IDENT@11..14 "bar"
16 SEMICOLON@[14; 15) ";" 16 SEMICOLON@14..15 ";"
17 WHITESPACE@[15; 16) "\n" 17 WHITESPACE@15..16 "\n"
18 USE_ITEM@[16; 54) 18 USE_ITEM@16..54
19 USE_KW@[16; 19) "use" 19 USE_KW@16..19 "use"
20 WHITESPACE@[19; 20) " " 20 WHITESPACE@19..20 " "
21 USE_TREE@[20; 53) 21 USE_TREE@20..53
22 PATH@[20; 23) 22 PATH@20..23
23 PATH_SEGMENT@[20; 23) 23 PATH_SEGMENT@20..23
24 NAME_REF@[20; 23) 24 NAME_REF@20..23
25 IDENT@[20; 23) "foo" 25 IDENT@20..23 "foo"
26 COLON2@[23; 25) "::" 26 COLON2@23..25 "::"
27 USE_TREE_LIST@[25; 53) 27 USE_TREE_LIST@25..53
28 L_CURLY@[25; 26) "{" 28 L_CURLY@25..26 "{"
29 USE_TREE@[26; 32) 29 USE_TREE@26..32
30 PATH@[26; 27) 30 PATH@26..27
31 PATH_SEGMENT@[26; 27) 31 PATH_SEGMENT@26..27
32 NAME_REF@[26; 27) 32 NAME_REF@26..27
33 IDENT@[26; 27) "a" 33 IDENT@26..27 "a"
34 WHITESPACE@[27; 28) " " 34 WHITESPACE@27..28 " "
35 ALIAS@[28; 32) 35 ALIAS@28..32
36 AS_KW@[28; 30) "as" 36 AS_KW@28..30 "as"
37 WHITESPACE@[30; 31) " " 37 WHITESPACE@30..31 " "
38 NAME@[31; 32) 38 NAME@31..32
39 IDENT@[31; 32) "b" 39 IDENT@31..32 "b"
40 COMMA@[32; 33) "," 40 COMMA@32..33 ","
41 WHITESPACE@[33; 34) " " 41 WHITESPACE@33..34 " "
42 USE_TREE@[34; 35) 42 USE_TREE@34..35
43 STAR@[34; 35) "*" 43 STAR@34..35 "*"
44 COMMA@[35; 36) "," 44 COMMA@35..36 ","
45 WHITESPACE@[36; 37) " " 45 WHITESPACE@36..37 " "
46 USE_TREE@[37; 40) 46 USE_TREE@37..40
47 COLON2@[37; 39) "::" 47 COLON2@37..39 "::"
48 STAR@[39; 40) "*" 48 STAR@39..40 "*"
49 COMMA@[40; 41) "," 49 COMMA@40..41 ","
50 WHITESPACE@[41; 42) " " 50 WHITESPACE@41..42 " "
51 USE_TREE@[42; 52) 51 USE_TREE@42..52
52 PATH@[42; 47) 52 PATH@42..47
53 PATH_SEGMENT@[42; 47) 53 PATH_SEGMENT@42..47
54 COLON2@[42; 44) "::" 54 COLON2@42..44 "::"
55 NAME_REF@[44; 47) 55 NAME_REF@44..47
56 IDENT@[44; 47) "foo" 56 IDENT@44..47 "foo"
57 WHITESPACE@[47; 48) " " 57 WHITESPACE@47..48 " "
58 ALIAS@[48; 52) 58 ALIAS@48..52
59 AS_KW@[48; 50) "as" 59 AS_KW@48..50 "as"
60 WHITESPACE@[50; 51) " " 60 WHITESPACE@50..51 " "
61 NAME@[51; 52) 61 NAME@51..52
62 IDENT@[51; 52) "x" 62 IDENT@51..52 "x"
63 R_CURLY@[52; 53) "}" 63 R_CURLY@52..53 "}"
64 SEMICOLON@[53; 54) ";" 64 SEMICOLON@53..54 ";"
65 WHITESPACE@[54; 55) "\n" 65 WHITESPACE@54..55 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.rast b/crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.rast
index f4739451e..95656d19b 100644
--- a/crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0016_struct_flavors.rast
@@ -1,93 +1,93 @@
1SOURCE_FILE@[0; 97) 1SOURCE_FILE@0..97
2 STRUCT_DEF@[0; 9) 2 STRUCT_DEF@0..9
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "A" 6 IDENT@7..8 "A"
7 SEMICOLON@[8; 9) ";" 7 SEMICOLON@8..9 ";"
8 WHITESPACE@[9; 10) "\n" 8 WHITESPACE@9..10 "\n"
9 STRUCT_DEF@[10; 21) 9 STRUCT_DEF@10..21
10 STRUCT_KW@[10; 16) "struct" 10 STRUCT_KW@10..16 "struct"
11 WHITESPACE@[16; 17) " " 11 WHITESPACE@16..17 " "
12 NAME@[17; 18) 12 NAME@17..18
13 IDENT@[17; 18) "B" 13 IDENT@17..18 "B"
14 WHITESPACE@[18; 19) " " 14 WHITESPACE@18..19 " "
15 RECORD_FIELD_DEF_LIST@[19; 21) 15 RECORD_FIELD_DEF_LIST@19..21
16 L_CURLY@[19; 20) "{" 16 L_CURLY@19..20 "{"
17 R_CURLY@[20; 21) "}" 17 R_CURLY@20..21 "}"
18 WHITESPACE@[21; 22) "\n" 18 WHITESPACE@21..22 "\n"
19 STRUCT_DEF@[22; 33) 19 STRUCT_DEF@22..33
20 STRUCT_KW@[22; 28) "struct" 20 STRUCT_KW@22..28 "struct"
21 WHITESPACE@[28; 29) " " 21 WHITESPACE@28..29 " "
22 NAME@[29; 30) 22 NAME@29..30
23 IDENT@[29; 30) "C" 23 IDENT@29..30 "C"
24 TUPLE_FIELD_DEF_LIST@[30; 32) 24 TUPLE_FIELD_DEF_LIST@30..32
25 L_PAREN@[30; 31) "(" 25 L_PAREN@30..31 "("
26 R_PAREN@[31; 32) ")" 26 R_PAREN@31..32 ")"
27 SEMICOLON@[32; 33) ";" 27 SEMICOLON@32..33 ";"
28 WHITESPACE@[33; 35) "\n\n" 28 WHITESPACE@33..35 "\n\n"
29 STRUCT_DEF@[35; 74) 29 STRUCT_DEF@35..74
30 STRUCT_KW@[35; 41) "struct" 30 STRUCT_KW@35..41 "struct"
31 WHITESPACE@[41; 42) " " 31 WHITESPACE@41..42 " "
32 NAME@[42; 43) 32 NAME@42..43
33 IDENT@[42; 43) "D" 33 IDENT@42..43 "D"
34 WHITESPACE@[43; 44) " " 34 WHITESPACE@43..44 " "
35 RECORD_FIELD_DEF_LIST@[44; 74) 35 RECORD_FIELD_DEF_LIST@44..74
36 L_CURLY@[44; 45) "{" 36 L_CURLY@44..45 "{"
37 WHITESPACE@[45; 50) "\n " 37 WHITESPACE@45..50 "\n "
38 RECORD_FIELD_DEF@[50; 56) 38 RECORD_FIELD_DEF@50..56
39 NAME@[50; 51) 39 NAME@50..51
40 IDENT@[50; 51) "a" 40 IDENT@50..51 "a"
41 COLON@[51; 52) ":" 41 COLON@51..52 ":"
42 WHITESPACE@[52; 53) " " 42 WHITESPACE@52..53 " "
43 PATH_TYPE@[53; 56) 43 PATH_TYPE@53..56
44 PATH@[53; 56) 44 PATH@53..56
45 PATH_SEGMENT@[53; 56) 45 PATH_SEGMENT@53..56
46 NAME_REF@[53; 56) 46 NAME_REF@53..56
47 IDENT@[53; 56) "u32" 47 IDENT@53..56 "u32"
48 COMMA@[56; 57) "," 48 COMMA@56..57 ","
49 WHITESPACE@[57; 62) "\n " 49 WHITESPACE@57..62 "\n "
50 RECORD_FIELD_DEF@[62; 72) 50 RECORD_FIELD_DEF@62..72
51 VISIBILITY@[62; 65) 51 VISIBILITY@62..65
52 PUB_KW@[62; 65) "pub" 52 PUB_KW@62..65 "pub"
53 WHITESPACE@[65; 66) " " 53 WHITESPACE@65..66 " "
54 NAME@[66; 67) 54 NAME@66..67
55 IDENT@[66; 67) "b" 55 IDENT@66..67 "b"
56 COLON@[67; 68) ":" 56 COLON@67..68 ":"
57 WHITESPACE@[68; 69) " " 57 WHITESPACE@68..69 " "
58 PATH_TYPE@[69; 72) 58 PATH_TYPE@69..72
59 PATH@[69; 72) 59 PATH@69..72
60 PATH_SEGMENT@[69; 72) 60 PATH_SEGMENT@69..72
61 NAME_REF@[69; 72) 61 NAME_REF@69..72
62 IDENT@[69; 72) "u32" 62 IDENT@69..72 "u32"
63 WHITESPACE@[72; 73) "\n" 63 WHITESPACE@72..73 "\n"
64 R_CURLY@[73; 74) "}" 64 R_CURLY@73..74 "}"
65 WHITESPACE@[74; 76) "\n\n" 65 WHITESPACE@74..76 "\n\n"
66 STRUCT_DEF@[76; 96) 66 STRUCT_DEF@76..96
67 STRUCT_KW@[76; 82) "struct" 67 STRUCT_KW@76..82 "struct"
68 WHITESPACE@[82; 83) " " 68 WHITESPACE@82..83 " "
69 NAME@[83; 84) 69 NAME@83..84
70 IDENT@[83; 84) "E" 70 IDENT@83..84 "E"
71 TUPLE_FIELD_DEF_LIST@[84; 95) 71 TUPLE_FIELD_DEF_LIST@84..95
72 L_PAREN@[84; 85) "(" 72 L_PAREN@84..85 "("
73 TUPLE_FIELD_DEF@[85; 90) 73 TUPLE_FIELD_DEF@85..90
74 VISIBILITY@[85; 88) 74 VISIBILITY@85..88
75 PUB_KW@[85; 88) "pub" 75 PUB_KW@85..88 "pub"
76 WHITESPACE@[88; 89) " " 76 WHITESPACE@88..89 " "
77 PATH_TYPE@[89; 90) 77 PATH_TYPE@89..90
78 PATH@[89; 90) 78 PATH@89..90
79 PATH_SEGMENT@[89; 90) 79 PATH_SEGMENT@89..90
80 NAME_REF@[89; 90) 80 NAME_REF@89..90
81 IDENT@[89; 90) "x" 81 IDENT@89..90 "x"
82 COMMA@[90; 91) "," 82 COMMA@90..91 ","
83 WHITESPACE@[91; 92) " " 83 WHITESPACE@91..92 " "
84 TUPLE_FIELD_DEF@[92; 93) 84 TUPLE_FIELD_DEF@92..93
85 PATH_TYPE@[92; 93) 85 PATH_TYPE@92..93
86 PATH@[92; 93) 86 PATH@92..93
87 PATH_SEGMENT@[92; 93) 87 PATH_SEGMENT@92..93
88 NAME_REF@[92; 93) 88 NAME_REF@92..93
89 IDENT@[92; 93) "y" 89 IDENT@92..93 "y"
90 COMMA@[93; 94) "," 90 COMMA@93..94 ","
91 R_PAREN@[94; 95) ")" 91 R_PAREN@94..95 ")"
92 SEMICOLON@[95; 96) ";" 92 SEMICOLON@95..96 ";"
93 WHITESPACE@[96; 97) "\n" 93 WHITESPACE@96..97 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.rast b/crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.rast
index 1d65b0d6e..b5747aacd 100644
--- a/crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.rast
@@ -1,29 +1,29 @@
1SOURCE_FILE@[0; 23) 1SOURCE_FILE@0..23
2 FN_DEF@[0; 22) 2 FN_DEF@0..22
3 ATTR@[0; 10) 3 ATTR@0..10
4 POUND@[0; 1) "#" 4 POUND@0..1 "#"
5 L_BRACK@[1; 2) "[" 5 L_BRACK@1..2 "["
6 PATH@[2; 5) 6 PATH@2..5
7 PATH_SEGMENT@[2; 5) 7 PATH_SEGMENT@2..5
8 NAME_REF@[2; 5) 8 NAME_REF@2..5
9 IDENT@[2; 5) "foo" 9 IDENT@2..5 "foo"
10 TOKEN_TREE@[5; 9) 10 TOKEN_TREE@5..9
11 L_PAREN@[5; 6) "(" 11 L_PAREN@5..6 "("
12 IDENT@[6; 7) "a" 12 IDENT@6..7 "a"
13 COMMA@[7; 8) "," 13 COMMA@7..8 ","
14 R_PAREN@[8; 9) ")" 14 R_PAREN@8..9 ")"
15 R_BRACK@[9; 10) "]" 15 R_BRACK@9..10 "]"
16 WHITESPACE@[10; 11) "\n" 16 WHITESPACE@10..11 "\n"
17 FN_KW@[11; 13) "fn" 17 FN_KW@11..13 "fn"
18 WHITESPACE@[13; 14) " " 18 WHITESPACE@13..14 " "
19 NAME@[14; 17) 19 NAME@14..17
20 IDENT@[14; 17) "foo" 20 IDENT@14..17 "foo"
21 PARAM_LIST@[17; 19) 21 PARAM_LIST@17..19
22 L_PAREN@[17; 18) "(" 22 L_PAREN@17..18 "("
23 R_PAREN@[18; 19) ")" 23 R_PAREN@18..19 ")"
24 WHITESPACE@[19; 20) " " 24 WHITESPACE@19..20 " "
25 BLOCK_EXPR@[20; 22) 25 BLOCK_EXPR@20..22
26 BLOCK@[20; 22) 26 BLOCK@20..22
27 L_CURLY@[20; 21) "{" 27 L_CURLY@20..21 "{"
28 R_CURLY@[21; 22) "}" 28 R_CURLY@21..22 "}"
29 WHITESPACE@[22; 23) "\n" 29 WHITESPACE@22..23 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.rast b/crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.rast
index 5e859ef29..451634e3f 100644
--- a/crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0018_struct_type_params.rast
@@ -1,257 +1,257 @@
1SOURCE_FILE@[0; 290) 1SOURCE_FILE@0..290
2 STRUCT_DEF@[0; 13) 2 STRUCT_DEF@0..13
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 9) 5 NAME@7..9
6 IDENT@[7; 9) "S1" 6 IDENT@7..9 "S1"
7 TYPE_PARAM_LIST@[9; 12) 7 TYPE_PARAM_LIST@9..12
8 L_ANGLE@[9; 10) "<" 8 L_ANGLE@9..10 "<"
9 TYPE_PARAM@[10; 11) 9 TYPE_PARAM@10..11
10 NAME@[10; 11) 10 NAME@10..11
11 IDENT@[10; 11) "T" 11 IDENT@10..11 "T"
12 R_ANGLE@[11; 12) ">" 12 R_ANGLE@11..12 ">"
13 SEMICOLON@[12; 13) ";" 13 SEMICOLON@12..13 ";"
14 WHITESPACE@[13; 14) "\n" 14 WHITESPACE@13..14 "\n"
15 STRUCT_DEF@[14; 32) 15 STRUCT_DEF@14..32
16 STRUCT_KW@[14; 20) "struct" 16 STRUCT_KW@14..20 "struct"
17 WHITESPACE@[20; 21) " " 17 WHITESPACE@20..21 " "
18 NAME@[21; 23) 18 NAME@21..23
19 IDENT@[21; 23) "S2" 19 IDENT@21..23 "S2"
20 TYPE_PARAM_LIST@[23; 26) 20 TYPE_PARAM_LIST@23..26
21 L_ANGLE@[23; 24) "<" 21 L_ANGLE@23..24 "<"
22 TYPE_PARAM@[24; 25) 22 TYPE_PARAM@24..25
23 NAME@[24; 25) 23 NAME@24..25
24 IDENT@[24; 25) "T" 24 IDENT@24..25 "T"
25 R_ANGLE@[25; 26) ">" 25 R_ANGLE@25..26 ">"
26 TUPLE_FIELD_DEF_LIST@[26; 31) 26 TUPLE_FIELD_DEF_LIST@26..31
27 L_PAREN@[26; 27) "(" 27 L_PAREN@26..27 "("
28 TUPLE_FIELD_DEF@[27; 30) 28 TUPLE_FIELD_DEF@27..30
29 PATH_TYPE@[27; 30) 29 PATH_TYPE@27..30
30 PATH@[27; 30) 30 PATH@27..30
31 PATH_SEGMENT@[27; 30) 31 PATH_SEGMENT@27..30
32 NAME_REF@[27; 30) 32 NAME_REF@27..30
33 IDENT@[27; 30) "u32" 33 IDENT@27..30 "u32"
34 R_PAREN@[30; 31) ")" 34 R_PAREN@30..31 ")"
35 SEMICOLON@[31; 32) ";" 35 SEMICOLON@31..32 ";"
36 WHITESPACE@[32; 33) "\n" 36 WHITESPACE@32..33 "\n"
37 STRUCT_DEF@[33; 56) 37 STRUCT_DEF@33..56
38 STRUCT_KW@[33; 39) "struct" 38 STRUCT_KW@33..39 "struct"
39 WHITESPACE@[39; 40) " " 39 WHITESPACE@39..40 " "
40 NAME@[40; 42) 40 NAME@40..42
41 IDENT@[40; 42) "S3" 41 IDENT@40..42 "S3"
42 TYPE_PARAM_LIST@[42; 45) 42 TYPE_PARAM_LIST@42..45
43 L_ANGLE@[42; 43) "<" 43 L_ANGLE@42..43 "<"
44 TYPE_PARAM@[43; 44) 44 TYPE_PARAM@43..44
45 NAME@[43; 44) 45 NAME@43..44
46 IDENT@[43; 44) "T" 46 IDENT@43..44 "T"
47 R_ANGLE@[44; 45) ">" 47 R_ANGLE@44..45 ">"
48 WHITESPACE@[45; 46) " " 48 WHITESPACE@45..46 " "
49 RECORD_FIELD_DEF_LIST@[46; 56) 49 RECORD_FIELD_DEF_LIST@46..56
50 L_CURLY@[46; 47) "{" 50 L_CURLY@46..47 "{"
51 WHITESPACE@[47; 48) " " 51 WHITESPACE@47..48 " "
52 RECORD_FIELD_DEF@[48; 54) 52 RECORD_FIELD_DEF@48..54
53 NAME@[48; 49) 53 NAME@48..49
54 IDENT@[48; 49) "u" 54 IDENT@48..49 "u"
55 COLON@[49; 50) ":" 55 COLON@49..50 ":"
56 WHITESPACE@[50; 51) " " 56 WHITESPACE@50..51 " "
57 PATH_TYPE@[51; 54) 57 PATH_TYPE@51..54
58 PATH@[51; 54) 58 PATH@51..54
59 PATH_SEGMENT@[51; 54) 59 PATH_SEGMENT@51..54
60 NAME_REF@[51; 54) 60 NAME_REF@51..54
61 IDENT@[51; 54) "u32" 61 IDENT@51..54 "u32"
62 WHITESPACE@[54; 55) " " 62 WHITESPACE@54..55 " "
63 R_CURLY@[55; 56) "}" 63 R_CURLY@55..56 "}"
64 WHITESPACE@[56; 58) "\n\n" 64 WHITESPACE@56..58 "\n\n"
65 STRUCT_DEF@[58; 70) 65 STRUCT_DEF@58..70
66 STRUCT_KW@[58; 64) "struct" 66 STRUCT_KW@58..64 "struct"
67 WHITESPACE@[64; 65) " " 67 WHITESPACE@64..65 " "
68 NAME@[65; 67) 68 NAME@65..67
69 IDENT@[65; 67) "S4" 69 IDENT@65..67 "S4"
70 TYPE_PARAM_LIST@[67; 69) 70 TYPE_PARAM_LIST@67..69
71 L_ANGLE@[67; 68) "<" 71 L_ANGLE@67..68 "<"
72 R_ANGLE@[68; 69) ">" 72 R_ANGLE@68..69 ">"
73 SEMICOLON@[69; 70) ";" 73 SEMICOLON@69..70 ";"
74 WHITESPACE@[70; 71) "\n" 74 WHITESPACE@70..71 "\n"
75 STRUCT_DEF@[71; 85) 75 STRUCT_DEF@71..85
76 STRUCT_KW@[71; 77) "struct" 76 STRUCT_KW@71..77 "struct"
77 WHITESPACE@[77; 78) " " 77 WHITESPACE@77..78 " "
78 NAME@[78; 80) 78 NAME@78..80
79 IDENT@[78; 80) "S5" 79 IDENT@78..80 "S5"
80 TYPE_PARAM_LIST@[80; 84) 80 TYPE_PARAM_LIST@80..84
81 L_ANGLE@[80; 81) "<" 81 L_ANGLE@80..81 "<"
82 LIFETIME_PARAM@[81; 83) 82 LIFETIME_PARAM@81..83
83 LIFETIME@[81; 83) "\'a" 83 LIFETIME@81..83 "\'a"
84 R_ANGLE@[83; 84) ">" 84 R_ANGLE@83..84 ">"
85 SEMICOLON@[84; 85) ";" 85 SEMICOLON@84..85 ";"
86 WHITESPACE@[85; 86) "\n" 86 WHITESPACE@85..86 "\n"
87 STRUCT_DEF@[86; 101) 87 STRUCT_DEF@86..101
88 STRUCT_KW@[86; 92) "struct" 88 STRUCT_KW@86..92 "struct"
89 WHITESPACE@[92; 93) " " 89 WHITESPACE@92..93 " "
90 NAME@[93; 95) 90 NAME@93..95
91 IDENT@[93; 95) "S6" 91 IDENT@93..95 "S6"
92 TYPE_PARAM_LIST@[95; 100) 92 TYPE_PARAM_LIST@95..100
93 L_ANGLE@[95; 96) "<" 93 L_ANGLE@95..96 "<"
94 LIFETIME_PARAM@[96; 99) 94 LIFETIME_PARAM@96..99
95 LIFETIME@[96; 98) "\'a" 95 LIFETIME@96..98 "\'a"
96 COLON@[98; 99) ":" 96 COLON@98..99 ":"
97 R_ANGLE@[99; 100) ">" 97 R_ANGLE@99..100 ">"
98 SEMICOLON@[100; 101) ";" 98 SEMICOLON@100..101 ";"
99 WHITESPACE@[101; 102) "\n" 99 WHITESPACE@101..102 "\n"
100 STRUCT_DEF@[102; 120) 100 STRUCT_DEF@102..120
101 STRUCT_KW@[102; 108) "struct" 101 STRUCT_KW@102..108 "struct"
102 WHITESPACE@[108; 109) " " 102 WHITESPACE@108..109 " "
103 NAME@[109; 111) 103 NAME@109..111
104 IDENT@[109; 111) "S7" 104 IDENT@109..111 "S7"
105 TYPE_PARAM_LIST@[111; 119) 105 TYPE_PARAM_LIST@111..119
106 L_ANGLE@[111; 112) "<" 106 L_ANGLE@111..112 "<"
107 LIFETIME_PARAM@[112; 118) 107 LIFETIME_PARAM@112..118
108 LIFETIME@[112; 114) "\'a" 108 LIFETIME@112..114 "\'a"
109 COLON@[114; 115) ":" 109 COLON@114..115 ":"
110 WHITESPACE@[115; 116) " " 110 WHITESPACE@115..116 " "
111 LIFETIME@[116; 118) "\'b" 111 LIFETIME@116..118 "\'b"
112 R_ANGLE@[118; 119) ">" 112 R_ANGLE@118..119 ">"
113 SEMICOLON@[119; 120) ";" 113 SEMICOLON@119..120 ";"
114 WHITESPACE@[120; 121) "\n" 114 WHITESPACE@120..121 "\n"
115 STRUCT_DEF@[121; 142) 115 STRUCT_DEF@121..142
116 STRUCT_KW@[121; 127) "struct" 116 STRUCT_KW@121..127 "struct"
117 WHITESPACE@[127; 128) " " 117 WHITESPACE@127..128 " "
118 NAME@[128; 130) 118 NAME@128..130
119 IDENT@[128; 130) "S8" 119 IDENT@128..130 "S8"
120 TYPE_PARAM_LIST@[130; 141) 120 TYPE_PARAM_LIST@130..141
121 L_ANGLE@[130; 131) "<" 121 L_ANGLE@130..131 "<"
122 LIFETIME_PARAM@[131; 139) 122 LIFETIME_PARAM@131..139
123 LIFETIME@[131; 133) "\'a" 123 LIFETIME@131..133 "\'a"
124 COLON@[133; 134) ":" 124 COLON@133..134 ":"
125 WHITESPACE@[134; 135) " " 125 WHITESPACE@134..135 " "
126 LIFETIME@[135; 137) "\'b" 126 LIFETIME@135..137 "\'b"
127 WHITESPACE@[137; 138) " " 127 WHITESPACE@137..138 " "
128 PLUS@[138; 139) "+" 128 PLUS@138..139 "+"
129 WHITESPACE@[139; 140) " " 129 WHITESPACE@139..140 " "
130 R_ANGLE@[140; 141) ">" 130 R_ANGLE@140..141 ">"
131 SEMICOLON@[141; 142) ";" 131 SEMICOLON@141..142 ";"
132 WHITESPACE@[142; 143) "\n" 132 WHITESPACE@142..143 "\n"
133 STRUCT_DEF@[143; 166) 133 STRUCT_DEF@143..166
134 STRUCT_KW@[143; 149) "struct" 134 STRUCT_KW@143..149 "struct"
135 WHITESPACE@[149; 150) " " 135 WHITESPACE@149..150 " "
136 NAME@[150; 152) 136 NAME@150..152
137 IDENT@[150; 152) "S9" 137 IDENT@150..152 "S9"
138 TYPE_PARAM_LIST@[152; 165) 138 TYPE_PARAM_LIST@152..165
139 L_ANGLE@[152; 153) "<" 139 L_ANGLE@152..153 "<"
140 LIFETIME_PARAM@[153; 164) 140 LIFETIME_PARAM@153..164
141 LIFETIME@[153; 155) "\'a" 141 LIFETIME@153..155 "\'a"
142 COLON@[155; 156) ":" 142 COLON@155..156 ":"
143 WHITESPACE@[156; 157) " " 143 WHITESPACE@156..157 " "
144 LIFETIME@[157; 159) "\'b" 144 LIFETIME@157..159 "\'b"
145 WHITESPACE@[159; 160) " " 145 WHITESPACE@159..160 " "
146 PLUS@[160; 161) "+" 146 PLUS@160..161 "+"
147 WHITESPACE@[161; 162) " " 147 WHITESPACE@161..162 " "
148 LIFETIME@[162; 164) "\'c" 148 LIFETIME@162..164 "\'c"
149 R_ANGLE@[164; 165) ">" 149 R_ANGLE@164..165 ">"
150 SEMICOLON@[165; 166) ";" 150 SEMICOLON@165..166 ";"
151 WHITESPACE@[166; 167) "\n" 151 WHITESPACE@166..167 "\n"
152 STRUCT_DEF@[167; 183) 152 STRUCT_DEF@167..183
153 STRUCT_KW@[167; 173) "struct" 153 STRUCT_KW@167..173 "struct"
154 WHITESPACE@[173; 174) " " 154 WHITESPACE@173..174 " "
155 NAME@[174; 177) 155 NAME@174..177
156 IDENT@[174; 177) "S10" 156 IDENT@174..177 "S10"
157 TYPE_PARAM_LIST@[177; 182) 157 TYPE_PARAM_LIST@177..182
158 L_ANGLE@[177; 178) "<" 158 L_ANGLE@177..178 "<"
159 LIFETIME_PARAM@[178; 180) 159 LIFETIME_PARAM@178..180
160 LIFETIME@[178; 180) "\'a" 160 LIFETIME@178..180 "\'a"
161 COMMA@[180; 181) "," 161 COMMA@180..181 ","
162 R_ANGLE@[181; 182) ">" 162 R_ANGLE@181..182 ">"
163 SEMICOLON@[182; 183) ";" 163 SEMICOLON@182..183 ";"
164 WHITESPACE@[183; 184) "\n" 164 WHITESPACE@183..184 "\n"
165 STRUCT_DEF@[184; 203) 165 STRUCT_DEF@184..203
166 STRUCT_KW@[184; 190) "struct" 166 STRUCT_KW@184..190 "struct"
167 WHITESPACE@[190; 191) " " 167 WHITESPACE@190..191 " "
168 NAME@[191; 194) 168 NAME@191..194
169 IDENT@[191; 194) "S11" 169 IDENT@191..194 "S11"
170 TYPE_PARAM_LIST@[194; 202) 170 TYPE_PARAM_LIST@194..202
171 L_ANGLE@[194; 195) "<" 171 L_ANGLE@194..195 "<"
172 LIFETIME_PARAM@[195; 197) 172 LIFETIME_PARAM@195..197
173 LIFETIME@[195; 197) "\'a" 173 LIFETIME@195..197 "\'a"
174 COMMA@[197; 198) "," 174 COMMA@197..198 ","
175 WHITESPACE@[198; 199) " " 175 WHITESPACE@198..199 " "
176 LIFETIME_PARAM@[199; 201) 176 LIFETIME_PARAM@199..201
177 LIFETIME@[199; 201) "\'b" 177 LIFETIME@199..201 "\'b"
178 R_ANGLE@[201; 202) ">" 178 R_ANGLE@201..202 ">"
179 SEMICOLON@[202; 203) ";" 179 SEMICOLON@202..203 ";"
180 WHITESPACE@[203; 204) "\n" 180 WHITESPACE@203..204 "\n"
181 STRUCT_DEF@[204; 233) 181 STRUCT_DEF@204..233
182 STRUCT_KW@[204; 210) "struct" 182 STRUCT_KW@204..210 "struct"
183 WHITESPACE@[210; 211) " " 183 WHITESPACE@210..211 " "
184 NAME@[211; 214) 184 NAME@211..214
185 IDENT@[211; 214) "S12" 185 IDENT@211..214 "S12"
186 TYPE_PARAM_LIST@[214; 232) 186 TYPE_PARAM_LIST@214..232
187 L_ANGLE@[214; 215) "<" 187 L_ANGLE@214..215 "<"
188 LIFETIME_PARAM@[215; 222) 188 LIFETIME_PARAM@215..222
189 LIFETIME@[215; 217) "\'a" 189 LIFETIME@215..217 "\'a"
190 COLON@[217; 218) ":" 190 COLON@217..218 ":"
191 WHITESPACE@[218; 219) " " 191 WHITESPACE@218..219 " "
192 LIFETIME@[219; 221) "\'b" 192 LIFETIME@219..221 "\'b"
193 PLUS@[221; 222) "+" 193 PLUS@221..222 "+"
194 COMMA@[222; 223) "," 194 COMMA@222..223 ","
195 WHITESPACE@[223; 224) " " 195 WHITESPACE@223..224 " "
196 LIFETIME_PARAM@[224; 230) 196 LIFETIME_PARAM@224..230
197 LIFETIME@[224; 226) "\'b" 197 LIFETIME@224..226 "\'b"
198 COLON@[226; 227) ":" 198 COLON@226..227 ":"
199 WHITESPACE@[227; 228) " " 199 WHITESPACE@227..228 " "
200 LIFETIME@[228; 230) "\'c" 200 LIFETIME@228..230 "\'c"
201 COMMA@[230; 231) "," 201 COMMA@230..231 ","
202 R_ANGLE@[231; 232) ">" 202 R_ANGLE@231..232 ">"
203 SEMICOLON@[232; 233) ";" 203 SEMICOLON@232..233 ";"
204 WHITESPACE@[233; 235) "\n\n" 204 WHITESPACE@233..235 "\n\n"
205 STRUCT_DEF@[235; 249) 205 STRUCT_DEF@235..249
206 STRUCT_KW@[235; 241) "struct" 206 STRUCT_KW@235..241 "struct"
207 WHITESPACE@[241; 242) " " 207 WHITESPACE@241..242 " "
208 NAME@[242; 245) 208 NAME@242..245
209 IDENT@[242; 245) "S13" 209 IDENT@242..245 "S13"
210 TYPE_PARAM_LIST@[245; 248) 210 TYPE_PARAM_LIST@245..248
211 L_ANGLE@[245; 246) "<" 211 L_ANGLE@245..246 "<"
212 TYPE_PARAM@[246; 247) 212 TYPE_PARAM@246..247
213 NAME@[246; 247) 213 NAME@246..247
214 IDENT@[246; 247) "T" 214 IDENT@246..247 "T"
215 R_ANGLE@[247; 248) ">" 215 R_ANGLE@247..248 ">"
216 SEMICOLON@[248; 249) ";" 216 SEMICOLON@248..249 ";"
217 WHITESPACE@[249; 250) "\n" 217 WHITESPACE@249..250 "\n"
218 STRUCT_DEF@[250; 267) 218 STRUCT_DEF@250..267
219 STRUCT_KW@[250; 256) "struct" 219 STRUCT_KW@250..256 "struct"
220 WHITESPACE@[256; 257) " " 220 WHITESPACE@256..257 " "
221 NAME@[257; 260) 221 NAME@257..260
222 IDENT@[257; 260) "S14" 222 IDENT@257..260 "S14"
223 TYPE_PARAM_LIST@[260; 266) 223 TYPE_PARAM_LIST@260..266
224 L_ANGLE@[260; 261) "<" 224 L_ANGLE@260..261 "<"
225 TYPE_PARAM@[261; 262) 225 TYPE_PARAM@261..262
226 NAME@[261; 262) 226 NAME@261..262
227 IDENT@[261; 262) "T" 227 IDENT@261..262 "T"
228 COMMA@[262; 263) "," 228 COMMA@262..263 ","
229 WHITESPACE@[263; 264) " " 229 WHITESPACE@263..264 " "
230 TYPE_PARAM@[264; 265) 230 TYPE_PARAM@264..265
231 NAME@[264; 265) 231 NAME@264..265
232 IDENT@[264; 265) "U" 232 IDENT@264..265 "U"
233 R_ANGLE@[265; 266) ">" 233 R_ANGLE@265..266 ">"
234 SEMICOLON@[266; 267) ";" 234 SEMICOLON@266..267 ";"
235 WHITESPACE@[267; 268) "\n" 235 WHITESPACE@267..268 "\n"
236 STRUCT_DEF@[268; 289) 236 STRUCT_DEF@268..289
237 STRUCT_KW@[268; 274) "struct" 237 STRUCT_KW@268..274 "struct"
238 WHITESPACE@[274; 275) " " 238 WHITESPACE@274..275 " "
239 NAME@[275; 278) 239 NAME@275..278
240 IDENT@[275; 278) "S15" 240 IDENT@275..278 "S15"
241 TYPE_PARAM_LIST@[278; 288) 241 TYPE_PARAM_LIST@278..288
242 L_ANGLE@[278; 279) "<" 242 L_ANGLE@278..279 "<"
243 LIFETIME_PARAM@[279; 281) 243 LIFETIME_PARAM@279..281
244 LIFETIME@[279; 281) "\'a" 244 LIFETIME@279..281 "\'a"
245 COMMA@[281; 282) "," 245 COMMA@281..282 ","
246 WHITESPACE@[282; 283) " " 246 WHITESPACE@282..283 " "
247 TYPE_PARAM@[283; 284) 247 TYPE_PARAM@283..284
248 NAME@[283; 284) 248 NAME@283..284
249 IDENT@[283; 284) "T" 249 IDENT@283..284 "T"
250 COMMA@[284; 285) "," 250 COMMA@284..285 ","
251 WHITESPACE@[285; 286) " " 251 WHITESPACE@285..286 " "
252 TYPE_PARAM@[286; 287) 252 TYPE_PARAM@286..287
253 NAME@[286; 287) 253 NAME@286..287
254 IDENT@[286; 287) "U" 254 IDENT@286..287 "U"
255 R_ANGLE@[287; 288) ">" 255 R_ANGLE@287..288 ">"
256 SEMICOLON@[288; 289) ";" 256 SEMICOLON@288..289 ";"
257 WHITESPACE@[289; 290) "\n" 257 WHITESPACE@289..290 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0019_enums.rast b/crates/ra_syntax/test_data/parser/ok/0019_enums.rast
index 9d4a47a51..f767e9e19 100644
--- a/crates/ra_syntax/test_data/parser/ok/0019_enums.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0019_enums.rast
@@ -1,155 +1,155 @@
1SOURCE_FILE@[0; 182) 1SOURCE_FILE@0..182
2 ENUM_DEF@[0; 11) 2 ENUM_DEF@0..11
3 ENUM_KW@[0; 4) "enum" 3 ENUM_KW@0..4 "enum"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 7) 5 NAME@5..7
6 IDENT@[5; 7) "E1" 6 IDENT@5..7 "E1"
7 WHITESPACE@[7; 8) " " 7 WHITESPACE@7..8 " "
8 ENUM_VARIANT_LIST@[8; 11) 8 ENUM_VARIANT_LIST@8..11
9 L_CURLY@[8; 9) "{" 9 L_CURLY@8..9 "{"
10 WHITESPACE@[9; 10) "\n" 10 WHITESPACE@9..10 "\n"
11 R_CURLY@[10; 11) "}" 11 R_CURLY@10..11 "}"
12 WHITESPACE@[11; 13) "\n\n" 12 WHITESPACE@11..13 "\n\n"
13 ENUM_DEF@[13; 27) 13 ENUM_DEF@13..27
14 ENUM_KW@[13; 17) "enum" 14 ENUM_KW@13..17 "enum"
15 WHITESPACE@[17; 18) " " 15 WHITESPACE@17..18 " "
16 NAME@[18; 20) 16 NAME@18..20
17 IDENT@[18; 20) "E2" 17 IDENT@18..20 "E2"
18 TYPE_PARAM_LIST@[20; 23) 18 TYPE_PARAM_LIST@20..23
19 L_ANGLE@[20; 21) "<" 19 L_ANGLE@20..21 "<"
20 TYPE_PARAM@[21; 22) 20 TYPE_PARAM@21..22
21 NAME@[21; 22) 21 NAME@21..22
22 IDENT@[21; 22) "T" 22 IDENT@21..22 "T"
23 R_ANGLE@[22; 23) ">" 23 R_ANGLE@22..23 ">"
24 WHITESPACE@[23; 24) " " 24 WHITESPACE@23..24 " "
25 ENUM_VARIANT_LIST@[24; 27) 25 ENUM_VARIANT_LIST@24..27
26 L_CURLY@[24; 25) "{" 26 L_CURLY@24..25 "{"
27 WHITESPACE@[25; 26) "\n" 27 WHITESPACE@25..26 "\n"
28 R_CURLY@[26; 27) "}" 28 R_CURLY@26..27 "}"
29 WHITESPACE@[27; 29) "\n\n" 29 WHITESPACE@27..29 "\n\n"
30 ENUM_DEF@[29; 46) 30 ENUM_DEF@29..46
31 ENUM_KW@[29; 33) "enum" 31 ENUM_KW@29..33 "enum"
32 WHITESPACE@[33; 34) " " 32 WHITESPACE@33..34 " "
33 NAME@[34; 36) 33 NAME@34..36
34 IDENT@[34; 36) "E3" 34 IDENT@34..36 "E3"
35 WHITESPACE@[36; 37) " " 35 WHITESPACE@36..37 " "
36 ENUM_VARIANT_LIST@[37; 46) 36 ENUM_VARIANT_LIST@37..46
37 L_CURLY@[37; 38) "{" 37 L_CURLY@37..38 "{"
38 WHITESPACE@[38; 43) "\n " 38 WHITESPACE@38..43 "\n "
39 ENUM_VARIANT@[43; 44) 39 ENUM_VARIANT@43..44
40 NAME@[43; 44) 40 NAME@43..44
41 IDENT@[43; 44) "X" 41 IDENT@43..44 "X"
42 WHITESPACE@[44; 45) "\n" 42 WHITESPACE@44..45 "\n"
43 R_CURLY@[45; 46) "}" 43 R_CURLY@45..46 "}"
44 WHITESPACE@[46; 48) "\n\n" 44 WHITESPACE@46..48 "\n\n"
45 ENUM_DEF@[48; 66) 45 ENUM_DEF@48..66
46 ENUM_KW@[48; 52) "enum" 46 ENUM_KW@48..52 "enum"
47 WHITESPACE@[52; 53) " " 47 WHITESPACE@52..53 " "
48 NAME@[53; 55) 48 NAME@53..55
49 IDENT@[53; 55) "E4" 49 IDENT@53..55 "E4"
50 WHITESPACE@[55; 56) " " 50 WHITESPACE@55..56 " "
51 ENUM_VARIANT_LIST@[56; 66) 51 ENUM_VARIANT_LIST@56..66
52 L_CURLY@[56; 57) "{" 52 L_CURLY@56..57 "{"
53 WHITESPACE@[57; 62) "\n " 53 WHITESPACE@57..62 "\n "
54 ENUM_VARIANT@[62; 63) 54 ENUM_VARIANT@62..63
55 NAME@[62; 63) 55 NAME@62..63
56 IDENT@[62; 63) "X" 56 IDENT@62..63 "X"
57 COMMA@[63; 64) "," 57 COMMA@63..64 ","
58 WHITESPACE@[64; 65) "\n" 58 WHITESPACE@64..65 "\n"
59 R_CURLY@[65; 66) "}" 59 R_CURLY@65..66 "}"
60 WHITESPACE@[66; 68) "\n\n" 60 WHITESPACE@66..68 "\n\n"
61 ENUM_DEF@[68; 181) 61 ENUM_DEF@68..181
62 ENUM_KW@[68; 72) "enum" 62 ENUM_KW@68..72 "enum"
63 WHITESPACE@[72; 73) " " 63 WHITESPACE@72..73 " "
64 NAME@[73; 75) 64 NAME@73..75
65 IDENT@[73; 75) "E5" 65 IDENT@73..75 "E5"
66 WHITESPACE@[75; 76) " " 66 WHITESPACE@75..76 " "
67 ENUM_VARIANT_LIST@[76; 181) 67 ENUM_VARIANT_LIST@76..181
68 L_CURLY@[76; 77) "{" 68 L_CURLY@76..77 "{"
69 WHITESPACE@[77; 82) "\n " 69 WHITESPACE@77..82 "\n "
70 ENUM_VARIANT@[82; 83) 70 ENUM_VARIANT@82..83
71 NAME@[82; 83) 71 NAME@82..83
72 IDENT@[82; 83) "A" 72 IDENT@82..83 "A"
73 COMMA@[83; 84) "," 73 COMMA@83..84 ","
74 WHITESPACE@[84; 89) "\n " 74 WHITESPACE@84..89 "\n "
75 ENUM_VARIANT@[89; 95) 75 ENUM_VARIANT@89..95
76 NAME@[89; 90) 76 NAME@89..90
77 IDENT@[89; 90) "B" 77 IDENT@89..90 "B"
78 WHITESPACE@[90; 91) " " 78 WHITESPACE@90..91 " "
79 EQ@[91; 92) "=" 79 EQ@91..92 "="
80 WHITESPACE@[92; 93) " " 80 WHITESPACE@92..93 " "
81 LITERAL@[93; 95) 81 LITERAL@93..95
82 INT_NUMBER@[93; 95) "92" 82 INT_NUMBER@93..95 "92"
83 COMMA@[95; 96) "," 83 COMMA@95..96 ","
84 WHITESPACE@[96; 101) "\n " 84 WHITESPACE@96..101 "\n "
85 ENUM_VARIANT@[101; 146) 85 ENUM_VARIANT@101..146
86 NAME@[101; 102) 86 NAME@101..102
87 IDENT@[101; 102) "C" 87 IDENT@101..102 "C"
88 WHITESPACE@[102; 103) " " 88 WHITESPACE@102..103 " "
89 RECORD_FIELD_DEF_LIST@[103; 146) 89 RECORD_FIELD_DEF_LIST@103..146
90 L_CURLY@[103; 104) "{" 90 L_CURLY@103..104 "{"
91 WHITESPACE@[104; 113) "\n " 91 WHITESPACE@104..113 "\n "
92 RECORD_FIELD_DEF@[113; 119) 92 RECORD_FIELD_DEF@113..119
93 NAME@[113; 114) 93 NAME@113..114
94 IDENT@[113; 114) "a" 94 IDENT@113..114 "a"
95 COLON@[114; 115) ":" 95 COLON@114..115 ":"
96 WHITESPACE@[115; 116) " " 96 WHITESPACE@115..116 " "
97 PATH_TYPE@[116; 119) 97 PATH_TYPE@116..119
98 PATH@[116; 119) 98 PATH@116..119
99 PATH_SEGMENT@[116; 119) 99 PATH_SEGMENT@116..119
100 NAME_REF@[116; 119) 100 NAME_REF@116..119
101 IDENT@[116; 119) "u32" 101 IDENT@116..119 "u32"
102 COMMA@[119; 120) "," 102 COMMA@119..120 ","
103 WHITESPACE@[120; 129) "\n " 103 WHITESPACE@120..129 "\n "
104 RECORD_FIELD_DEF@[129; 139) 104 RECORD_FIELD_DEF@129..139
105 VISIBILITY@[129; 132) 105 VISIBILITY@129..132
106 PUB_KW@[129; 132) "pub" 106 PUB_KW@129..132 "pub"
107 WHITESPACE@[132; 133) " " 107 WHITESPACE@132..133 " "
108 NAME@[133; 134) 108 NAME@133..134
109 IDENT@[133; 134) "b" 109 IDENT@133..134 "b"
110 COLON@[134; 135) ":" 110 COLON@134..135 ":"
111 WHITESPACE@[135; 136) " " 111 WHITESPACE@135..136 " "
112 PATH_TYPE@[136; 139) 112 PATH_TYPE@136..139
113 PATH@[136; 139) 113 PATH@136..139
114 PATH_SEGMENT@[136; 139) 114 PATH_SEGMENT@136..139
115 NAME_REF@[136; 139) 115 NAME_REF@136..139
116 IDENT@[136; 139) "f64" 116 IDENT@136..139 "f64"
117 COMMA@[139; 140) "," 117 COMMA@139..140 ","
118 WHITESPACE@[140; 145) "\n " 118 WHITESPACE@140..145 "\n "
119 R_CURLY@[145; 146) "}" 119 R_CURLY@145..146 "}"
120 COMMA@[146; 147) "," 120 COMMA@146..147 ","
121 WHITESPACE@[147; 152) "\n " 121 WHITESPACE@147..152 "\n "
122 ENUM_VARIANT@[152; 156) 122 ENUM_VARIANT@152..156
123 NAME@[152; 153) 123 NAME@152..153
124 IDENT@[152; 153) "F" 124 IDENT@152..153 "F"
125 WHITESPACE@[153; 154) " " 125 WHITESPACE@153..154 " "
126 RECORD_FIELD_DEF_LIST@[154; 156) 126 RECORD_FIELD_DEF_LIST@154..156
127 L_CURLY@[154; 155) "{" 127 L_CURLY@154..155 "{"
128 R_CURLY@[155; 156) "}" 128 R_CURLY@155..156 "}"
129 COMMA@[156; 157) "," 129 COMMA@156..157 ","
130 WHITESPACE@[157; 162) "\n " 130 WHITESPACE@157..162 "\n "
131 ENUM_VARIANT@[162; 169) 131 ENUM_VARIANT@162..169
132 NAME@[162; 163) 132 NAME@162..163
133 IDENT@[162; 163) "D" 133 IDENT@162..163 "D"
134 TUPLE_FIELD_DEF_LIST@[163; 169) 134 TUPLE_FIELD_DEF_LIST@163..169
135 L_PAREN@[163; 164) "(" 135 L_PAREN@163..164 "("
136 TUPLE_FIELD_DEF@[164; 167) 136 TUPLE_FIELD_DEF@164..167
137 PATH_TYPE@[164; 167) 137 PATH_TYPE@164..167
138 PATH@[164; 167) 138 PATH@164..167
139 PATH_SEGMENT@[164; 167) 139 PATH_SEGMENT@164..167
140 NAME_REF@[164; 167) 140 NAME_REF@164..167
141 IDENT@[164; 167) "u32" 141 IDENT@164..167 "u32"
142 COMMA@[167; 168) "," 142 COMMA@167..168 ","
143 R_PAREN@[168; 169) ")" 143 R_PAREN@168..169 ")"
144 COMMA@[169; 170) "," 144 COMMA@169..170 ","
145 WHITESPACE@[170; 175) "\n " 145 WHITESPACE@170..175 "\n "
146 ENUM_VARIANT@[175; 178) 146 ENUM_VARIANT@175..178
147 NAME@[175; 176) 147 NAME@175..176
148 IDENT@[175; 176) "E" 148 IDENT@175..176 "E"
149 TUPLE_FIELD_DEF_LIST@[176; 178) 149 TUPLE_FIELD_DEF_LIST@176..178
150 L_PAREN@[176; 177) "(" 150 L_PAREN@176..177 "("
151 R_PAREN@[177; 178) ")" 151 R_PAREN@177..178 ")"
152 COMMA@[178; 179) "," 152 COMMA@178..179 ","
153 WHITESPACE@[179; 180) "\n" 153 WHITESPACE@179..180 "\n"
154 R_CURLY@[180; 181) "}" 154 R_CURLY@180..181 "}"
155 WHITESPACE@[181; 182) "\n" 155 WHITESPACE@181..182 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.rast b/crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.rast
index edacc4bd9..4fb4baf56 100644
--- a/crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0020_type_param_bounds.rast
@@ -1,268 +1,268 @@
1SOURCE_FILE@[0; 250) 1SOURCE_FILE@0..250
2 STRUCT_DEF@[0; 12) 2 STRUCT_DEF@0..12
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "A" 6 IDENT@7..8 "A"
7 TYPE_PARAM_LIST@[8; 11) 7 TYPE_PARAM_LIST@8..11
8 L_ANGLE@[8; 9) "<" 8 L_ANGLE@8..9 "<"
9 TYPE_PARAM@[9; 10) 9 TYPE_PARAM@9..10
10 NAME@[9; 10) 10 NAME@9..10
11 IDENT@[9; 10) "T" 11 IDENT@9..10 "T"
12 R_ANGLE@[10; 11) ">" 12 R_ANGLE@10..11 ">"
13 SEMICOLON@[11; 12) ";" 13 SEMICOLON@11..12 ";"
14 WHITESPACE@[12; 13) "\n" 14 WHITESPACE@12..13 "\n"
15 STRUCT_DEF@[13; 26) 15 STRUCT_DEF@13..26
16 STRUCT_KW@[13; 19) "struct" 16 STRUCT_KW@13..19 "struct"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 NAME@[20; 21) 18 NAME@20..21
19 IDENT@[20; 21) "B" 19 IDENT@20..21 "B"
20 TYPE_PARAM_LIST@[21; 25) 20 TYPE_PARAM_LIST@21..25
21 L_ANGLE@[21; 22) "<" 21 L_ANGLE@21..22 "<"
22 TYPE_PARAM@[22; 24) 22 TYPE_PARAM@22..24
23 NAME@[22; 23) 23 NAME@22..23
24 IDENT@[22; 23) "T" 24 IDENT@22..23 "T"
25 COLON@[23; 24) ":" 25 COLON@23..24 ":"
26 TYPE_BOUND_LIST@[24; 24) 26 TYPE_BOUND_LIST@24..24
27 R_ANGLE@[24; 25) ">" 27 R_ANGLE@24..25 ">"
28 SEMICOLON@[25; 26) ";" 28 SEMICOLON@25..26 ";"
29 WHITESPACE@[26; 27) "\n" 29 WHITESPACE@26..27 "\n"
30 STRUCT_DEF@[27; 43) 30 STRUCT_DEF@27..43
31 STRUCT_KW@[27; 33) "struct" 31 STRUCT_KW@27..33 "struct"
32 WHITESPACE@[33; 34) " " 32 WHITESPACE@33..34 " "
33 NAME@[34; 35) 33 NAME@34..35
34 IDENT@[34; 35) "C" 34 IDENT@34..35 "C"
35 TYPE_PARAM_LIST@[35; 42) 35 TYPE_PARAM_LIST@35..42
36 L_ANGLE@[35; 36) "<" 36 L_ANGLE@35..36 "<"
37 TYPE_PARAM@[36; 41) 37 TYPE_PARAM@36..41
38 NAME@[36; 37) 38 NAME@36..37
39 IDENT@[36; 37) "T" 39 IDENT@36..37 "T"
40 COLON@[37; 38) ":" 40 COLON@37..38 ":"
41 WHITESPACE@[38; 39) " " 41 WHITESPACE@38..39 " "
42 TYPE_BOUND_LIST@[39; 41) 42 TYPE_BOUND_LIST@39..41
43 TYPE_BOUND@[39; 41) 43 TYPE_BOUND@39..41
44 LIFETIME@[39; 41) "\'a" 44 LIFETIME@39..41 "\'a"
45 R_ANGLE@[41; 42) ">" 45 R_ANGLE@41..42 ">"
46 SEMICOLON@[42; 43) ";" 46 SEMICOLON@42..43 ";"
47 WHITESPACE@[43; 44) "\n" 47 WHITESPACE@43..44 "\n"
48 STRUCT_DEF@[44; 63) 48 STRUCT_DEF@44..63
49 STRUCT_KW@[44; 50) "struct" 49 STRUCT_KW@44..50 "struct"
50 WHITESPACE@[50; 51) " " 50 WHITESPACE@50..51 " "
51 NAME@[51; 52) 51 NAME@51..52
52 IDENT@[51; 52) "D" 52 IDENT@51..52 "D"
53 TYPE_PARAM_LIST@[52; 62) 53 TYPE_PARAM_LIST@52..62
54 L_ANGLE@[52; 53) "<" 54 L_ANGLE@52..53 "<"
55 TYPE_PARAM@[53; 60) 55 TYPE_PARAM@53..60
56 NAME@[53; 54) 56 NAME@53..54
57 IDENT@[53; 54) "T" 57 IDENT@53..54 "T"
58 COLON@[54; 55) ":" 58 COLON@54..55 ":"
59 WHITESPACE@[55; 56) " " 59 WHITESPACE@55..56 " "
60 TYPE_BOUND_LIST@[56; 60) 60 TYPE_BOUND_LIST@56..60
61 TYPE_BOUND@[56; 58) 61 TYPE_BOUND@56..58
62 LIFETIME@[56; 58) "\'a" 62 LIFETIME@56..58 "\'a"
63 WHITESPACE@[58; 59) " " 63 WHITESPACE@58..59 " "
64 PLUS@[59; 60) "+" 64 PLUS@59..60 "+"
65 WHITESPACE@[60; 61) " " 65 WHITESPACE@60..61 " "
66 R_ANGLE@[61; 62) ">" 66 R_ANGLE@61..62 ">"
67 SEMICOLON@[62; 63) ";" 67 SEMICOLON@62..63 ";"
68 WHITESPACE@[63; 64) "\n" 68 WHITESPACE@63..64 "\n"
69 STRUCT_DEF@[64; 86) 69 STRUCT_DEF@64..86
70 STRUCT_KW@[64; 70) "struct" 70 STRUCT_KW@64..70 "struct"
71 WHITESPACE@[70; 71) " " 71 WHITESPACE@70..71 " "
72 NAME@[71; 72) 72 NAME@71..72
73 IDENT@[71; 72) "E" 73 IDENT@71..72 "E"
74 TYPE_PARAM_LIST@[72; 85) 74 TYPE_PARAM_LIST@72..85
75 L_ANGLE@[72; 73) "<" 75 L_ANGLE@72..73 "<"
76 TYPE_PARAM@[73; 83) 76 TYPE_PARAM@73..83
77 NAME@[73; 74) 77 NAME@73..74
78 IDENT@[73; 74) "T" 78 IDENT@73..74 "T"
79 COLON@[74; 75) ":" 79 COLON@74..75 ":"
80 WHITESPACE@[75; 76) " " 80 WHITESPACE@75..76 " "
81 TYPE_BOUND_LIST@[76; 83) 81 TYPE_BOUND_LIST@76..83
82 TYPE_BOUND@[76; 78) 82 TYPE_BOUND@76..78
83 LIFETIME@[76; 78) "\'a" 83 LIFETIME@76..78 "\'a"
84 WHITESPACE@[78; 79) " " 84 WHITESPACE@78..79 " "
85 PLUS@[79; 80) "+" 85 PLUS@79..80 "+"
86 WHITESPACE@[80; 81) " " 86 WHITESPACE@80..81 " "
87 TYPE_BOUND@[81; 83) 87 TYPE_BOUND@81..83
88 LIFETIME@[81; 83) "\'d" 88 LIFETIME@81..83 "\'d"
89 WHITESPACE@[83; 84) " " 89 WHITESPACE@83..84 " "
90 R_ANGLE@[84; 85) ">" 90 R_ANGLE@84..85 ">"
91 SEMICOLON@[85; 86) ";" 91 SEMICOLON@85..86 ";"
92 WHITESPACE@[86; 87) "\n" 92 WHITESPACE@86..87 "\n"
93 STRUCT_DEF@[87; 116) 93 STRUCT_DEF@87..116
94 STRUCT_KW@[87; 93) "struct" 94 STRUCT_KW@87..93 "struct"
95 WHITESPACE@[93; 94) " " 95 WHITESPACE@93..94 " "
96 NAME@[94; 95) 96 NAME@94..95
97 IDENT@[94; 95) "F" 97 IDENT@94..95 "F"
98 TYPE_PARAM_LIST@[95; 115) 98 TYPE_PARAM_LIST@95..115
99 L_ANGLE@[95; 96) "<" 99 L_ANGLE@95..96 "<"
100 TYPE_PARAM@[96; 114) 100 TYPE_PARAM@96..114
101 NAME@[96; 97) 101 NAME@96..97
102 IDENT@[96; 97) "T" 102 IDENT@96..97 "T"
103 COLON@[97; 98) ":" 103 COLON@97..98 ":"
104 WHITESPACE@[98; 99) " " 104 WHITESPACE@98..99 " "
105 TYPE_BOUND_LIST@[99; 114) 105 TYPE_BOUND_LIST@99..114
106 TYPE_BOUND@[99; 101) 106 TYPE_BOUND@99..101
107 LIFETIME@[99; 101) "\'a" 107 LIFETIME@99..101 "\'a"
108 WHITESPACE@[101; 102) " " 108 WHITESPACE@101..102 " "
109 PLUS@[102; 103) "+" 109 PLUS@102..103 "+"
110 WHITESPACE@[103; 104) " " 110 WHITESPACE@103..104 " "
111 TYPE_BOUND@[104; 106) 111 TYPE_BOUND@104..106
112 LIFETIME@[104; 106) "\'d" 112 LIFETIME@104..106 "\'d"
113 WHITESPACE@[106; 107) " " 113 WHITESPACE@106..107 " "
114 PLUS@[107; 108) "+" 114 PLUS@107..108 "+"
115 WHITESPACE@[108; 109) " " 115 WHITESPACE@108..109 " "
116 TYPE_BOUND@[109; 114) 116 TYPE_BOUND@109..114
117 PATH_TYPE@[109; 114) 117 PATH_TYPE@109..114
118 PATH@[109; 114) 118 PATH@109..114
119 PATH_SEGMENT@[109; 114) 119 PATH_SEGMENT@109..114
120 NAME_REF@[109; 114) 120 NAME_REF@109..114
121 IDENT@[109; 114) "Clone" 121 IDENT@109..114 "Clone"
122 R_ANGLE@[114; 115) ">" 122 R_ANGLE@114..115 ">"
123 SEMICOLON@[115; 116) ";" 123 SEMICOLON@115..116 ";"
124 WHITESPACE@[116; 117) "\n" 124 WHITESPACE@116..117 "\n"
125 STRUCT_DEF@[117; 143) 125 STRUCT_DEF@117..143
126 STRUCT_KW@[117; 123) "struct" 126 STRUCT_KW@117..123 "struct"
127 WHITESPACE@[123; 124) " " 127 WHITESPACE@123..124 " "
128 NAME@[124; 125) 128 NAME@124..125
129 IDENT@[124; 125) "G" 129 IDENT@124..125 "G"
130 TYPE_PARAM_LIST@[125; 142) 130 TYPE_PARAM_LIST@125..142
131 L_ANGLE@[125; 126) "<" 131 L_ANGLE@125..126 "<"
132 TYPE_PARAM@[126; 141) 132 TYPE_PARAM@126..141
133 NAME@[126; 127) 133 NAME@126..127
134 IDENT@[126; 127) "T" 134 IDENT@126..127 "T"
135 COLON@[127; 128) ":" 135 COLON@127..128 ":"
136 WHITESPACE@[128; 129) " " 136 WHITESPACE@128..129 " "
137 TYPE_BOUND_LIST@[129; 141) 137 TYPE_BOUND_LIST@129..141
138 TYPE_BOUND@[129; 134) 138 TYPE_BOUND@129..134
139 PATH_TYPE@[129; 134) 139 PATH_TYPE@129..134
140 PATH@[129; 134) 140 PATH@129..134
141 PATH_SEGMENT@[129; 134) 141 PATH_SEGMENT@129..134
142 NAME_REF@[129; 134) 142 NAME_REF@129..134
143 IDENT@[129; 134) "Clone" 143 IDENT@129..134 "Clone"
144 WHITESPACE@[134; 135) " " 144 WHITESPACE@134..135 " "
145 PLUS@[135; 136) "+" 145 PLUS@135..136 "+"
146 WHITESPACE@[136; 137) " " 146 WHITESPACE@136..137 " "
147 TYPE_BOUND@[137; 141) 147 TYPE_BOUND@137..141
148 PATH_TYPE@[137; 141) 148 PATH_TYPE@137..141
149 PATH@[137; 141) 149 PATH@137..141
150 PATH_SEGMENT@[137; 141) 150 PATH_SEGMENT@137..141
151 NAME_REF@[137; 141) 151 NAME_REF@137..141
152 IDENT@[137; 141) "Copy" 152 IDENT@137..141 "Copy"
153 R_ANGLE@[141; 142) ">" 153 R_ANGLE@141..142 ">"
154 SEMICOLON@[142; 143) ";" 154 SEMICOLON@142..143 ";"
155 WHITESPACE@[143; 144) "\n" 155 WHITESPACE@143..144 "\n"
156 STRUCT_DEF@[144; 180) 156 STRUCT_DEF@144..180
157 STRUCT_KW@[144; 150) "struct" 157 STRUCT_KW@144..150 "struct"
158 WHITESPACE@[150; 151) " " 158 WHITESPACE@150..151 " "
159 NAME@[151; 152) 159 NAME@151..152
160 IDENT@[151; 152) "H" 160 IDENT@151..152 "H"
161 TYPE_PARAM_LIST@[152; 179) 161 TYPE_PARAM_LIST@152..179
162 L_ANGLE@[152; 153) "<" 162 L_ANGLE@152..153 "<"
163 TYPE_PARAM@[153; 178) 163 TYPE_PARAM@153..178
164 NAME@[153; 154) 164 NAME@153..154
165 IDENT@[153; 154) "T" 165 IDENT@153..154 "T"
166 COLON@[154; 155) ":" 166 COLON@154..155 ":"
167 WHITESPACE@[155; 156) " " 167 WHITESPACE@155..156 " "
168 TYPE_BOUND_LIST@[156; 178) 168 TYPE_BOUND_LIST@156..178
169 TYPE_BOUND@[156; 161) 169 TYPE_BOUND@156..161
170 PATH_TYPE@[156; 161) 170 PATH_TYPE@156..161
171 PATH@[156; 161) 171 PATH@156..161
172 PATH_SEGMENT@[156; 161) 172 PATH_SEGMENT@156..161
173 COLON2@[156; 158) "::" 173 COLON2@156..158 "::"
174 NAME_REF@[158; 161) 174 NAME_REF@158..161
175 IDENT@[158; 161) "Foo" 175 IDENT@158..161 "Foo"
176 WHITESPACE@[161; 162) " " 176 WHITESPACE@161..162 " "
177 PLUS@[162; 163) "+" 177 PLUS@162..163 "+"
178 WHITESPACE@[163; 164) " " 178 WHITESPACE@163..164 " "
179 TYPE_BOUND@[164; 173) 179 TYPE_BOUND@164..173
180 PATH_TYPE@[164; 173) 180 PATH_TYPE@164..173
181 PATH@[164; 173) 181 PATH@164..173
182 PATH@[164; 168) 182 PATH@164..168
183 PATH_SEGMENT@[164; 168) 183 PATH_SEGMENT@164..168
184 SELF_KW@[164; 168) "self" 184 SELF_KW@164..168 "self"
185 COLON2@[168; 170) "::" 185 COLON2@168..170 "::"
186 PATH_SEGMENT@[170; 173) 186 PATH_SEGMENT@170..173
187 NAME_REF@[170; 173) 187 NAME_REF@170..173
188 IDENT@[170; 173) "Bar" 188 IDENT@170..173 "Bar"
189 WHITESPACE@[173; 174) " " 189 WHITESPACE@173..174 " "
190 PLUS@[174; 175) "+" 190 PLUS@174..175 "+"
191 WHITESPACE@[175; 176) " " 191 WHITESPACE@175..176 " "
192 TYPE_BOUND@[176; 178) 192 TYPE_BOUND@176..178
193 LIFETIME@[176; 178) "\'a" 193 LIFETIME@176..178 "\'a"
194 R_ANGLE@[178; 179) ">" 194 R_ANGLE@178..179 ">"
195 SEMICOLON@[179; 180) ";" 195 SEMICOLON@179..180 ";"
196 WHITESPACE@[180; 181) "\n" 196 WHITESPACE@180..181 "\n"
197 STRUCT_DEF@[181; 199) 197 STRUCT_DEF@181..199
198 STRUCT_KW@[181; 187) "struct" 198 STRUCT_KW@181..187 "struct"
199 WHITESPACE@[187; 188) " " 199 WHITESPACE@187..188 " "
200 NAME@[188; 189) 200 NAME@188..189
201 IDENT@[188; 189) "I" 201 IDENT@188..189 "I"
202 TYPE_PARAM_LIST@[189; 198) 202 TYPE_PARAM_LIST@189..198
203 L_ANGLE@[189; 190) "<" 203 L_ANGLE@189..190 "<"
204 TYPE_PARAM@[190; 192) 204 TYPE_PARAM@190..192
205 NAME@[190; 191) 205 NAME@190..191
206 IDENT@[190; 191) "T" 206 IDENT@190..191 "T"
207 COLON@[191; 192) ":" 207 COLON@191..192 ":"
208 TYPE_BOUND_LIST@[192; 192) 208 TYPE_BOUND_LIST@192..192
209 COMMA@[192; 193) "," 209 COMMA@192..193 ","
210 WHITESPACE@[193; 194) " " 210 WHITESPACE@193..194 " "
211 TYPE_PARAM@[194; 196) 211 TYPE_PARAM@194..196
212 NAME@[194; 195) 212 NAME@194..195
213 IDENT@[194; 195) "U" 213 IDENT@194..195 "U"
214 COLON@[195; 196) ":" 214 COLON@195..196 ":"
215 TYPE_BOUND_LIST@[196; 196) 215 TYPE_BOUND_LIST@196..196
216 COMMA@[196; 197) "," 216 COMMA@196..197 ","
217 R_ANGLE@[197; 198) ">" 217 R_ANGLE@197..198 ">"
218 SEMICOLON@[198; 199) ";" 218 SEMICOLON@198..199 ";"
219 WHITESPACE@[199; 200) "\n" 219 WHITESPACE@199..200 "\n"
220 STRUCT_DEF@[200; 250) 220 STRUCT_DEF@200..250
221 STRUCT_KW@[200; 206) "struct" 221 STRUCT_KW@200..206 "struct"
222 WHITESPACE@[206; 207) " " 222 WHITESPACE@206..207 " "
223 NAME@[207; 208) 223 NAME@207..208
224 IDENT@[207; 208) "K" 224 IDENT@207..208 "K"
225 TYPE_PARAM_LIST@[208; 249) 225 TYPE_PARAM_LIST@208..249
226 L_ANGLE@[208; 209) "<" 226 L_ANGLE@208..209 "<"
227 LIFETIME_PARAM@[209; 215) 227 LIFETIME_PARAM@209..215
228 LIFETIME@[209; 211) "\'a" 228 LIFETIME@209..211 "\'a"
229 COLON@[211; 212) ":" 229 COLON@211..212 ":"
230 WHITESPACE@[212; 213) " " 230 WHITESPACE@212..213 " "
231 LIFETIME@[213; 215) "\'d" 231 LIFETIME@213..215 "\'d"
232 COMMA@[215; 216) "," 232 COMMA@215..216 ","
233 WHITESPACE@[216; 217) " " 233 WHITESPACE@216..217 " "
234 LIFETIME_PARAM@[217; 228) 234 LIFETIME_PARAM@217..228
235 LIFETIME@[217; 219) "\'d" 235 LIFETIME@217..219 "\'d"
236 COLON@[219; 220) ":" 236 COLON@219..220 ":"
237 WHITESPACE@[220; 221) " " 237 WHITESPACE@220..221 " "
238 LIFETIME@[221; 223) "\'a" 238 LIFETIME@221..223 "\'a"
239 WHITESPACE@[223; 224) " " 239 WHITESPACE@223..224 " "
240 PLUS@[224; 225) "+" 240 PLUS@224..225 "+"
241 WHITESPACE@[225; 226) " " 241 WHITESPACE@225..226 " "
242 LIFETIME@[226; 228) "\'b" 242 LIFETIME@226..228 "\'b"
243 COMMA@[228; 229) "," 243 COMMA@228..229 ","
244 WHITESPACE@[229; 230) " " 244 WHITESPACE@229..230 " "
245 TYPE_PARAM@[230; 248) 245 TYPE_PARAM@230..248
246 NAME@[230; 231) 246 NAME@230..231
247 IDENT@[230; 231) "T" 247 IDENT@230..231 "T"
248 COLON@[231; 232) ":" 248 COLON@231..232 ":"
249 WHITESPACE@[232; 233) " " 249 WHITESPACE@232..233 " "
250 TYPE_BOUND_LIST@[233; 248) 250 TYPE_BOUND_LIST@233..248
251 TYPE_BOUND@[233; 235) 251 TYPE_BOUND@233..235
252 LIFETIME@[233; 235) "\'a" 252 LIFETIME@233..235 "\'a"
253 WHITESPACE@[235; 236) " " 253 WHITESPACE@235..236 " "
254 PLUS@[236; 237) "+" 254 PLUS@236..237 "+"
255 WHITESPACE@[237; 238) " " 255 WHITESPACE@237..238 " "
256 TYPE_BOUND@[238; 240) 256 TYPE_BOUND@238..240
257 LIFETIME@[238; 240) "\'d" 257 LIFETIME@238..240 "\'d"
258 WHITESPACE@[240; 241) " " 258 WHITESPACE@240..241 " "
259 PLUS@[241; 242) "+" 259 PLUS@241..242 "+"
260 WHITESPACE@[242; 243) " " 260 WHITESPACE@242..243 " "
261 TYPE_BOUND@[243; 248) 261 TYPE_BOUND@243..248
262 PATH_TYPE@[243; 248) 262 PATH_TYPE@243..248
263 PATH@[243; 248) 263 PATH@243..248
264 PATH_SEGMENT@[243; 248) 264 PATH_SEGMENT@243..248
265 NAME_REF@[243; 248) 265 NAME_REF@243..248
266 IDENT@[243; 248) "Clone" 266 IDENT@243..248 "Clone"
267 R_ANGLE@[248; 249) ">" 267 R_ANGLE@248..249 ">"
268 SEMICOLON@[249; 250) ";" 268 SEMICOLON@249..250 ";"
diff --git a/crates/ra_syntax/test_data/parser/ok/0021_extern_fn.rast b/crates/ra_syntax/test_data/parser/ok/0021_extern_fn.rast
index 974fb9c44..643a1d16c 100644
--- a/crates/ra_syntax/test_data/parser/ok/0021_extern_fn.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0021_extern_fn.rast
@@ -1,59 +1,59 @@
1SOURCE_FILE@[0; 71) 1SOURCE_FILE@0..71
2 FN_DEF@[0; 19) 2 FN_DEF@0..19
3 ABI@[0; 6) 3 ABI@0..6
4 EXTERN_KW@[0; 6) "extern" 4 EXTERN_KW@0..6 "extern"
5 WHITESPACE@[6; 7) " " 5 WHITESPACE@6..7 " "
6 FN_KW@[7; 9) "fn" 6 FN_KW@7..9 "fn"
7 WHITESPACE@[9; 10) " " 7 WHITESPACE@9..10 " "
8 NAME@[10; 13) 8 NAME@10..13
9 IDENT@[10; 13) "foo" 9 IDENT@10..13 "foo"
10 PARAM_LIST@[13; 15) 10 PARAM_LIST@13..15
11 L_PAREN@[13; 14) "(" 11 L_PAREN@13..14 "("
12 R_PAREN@[14; 15) ")" 12 R_PAREN@14..15 ")"
13 WHITESPACE@[15; 16) " " 13 WHITESPACE@15..16 " "
14 BLOCK_EXPR@[16; 19) 14 BLOCK_EXPR@16..19
15 BLOCK@[16; 19) 15 BLOCK@16..19
16 L_CURLY@[16; 17) "{" 16 L_CURLY@16..17 "{"
17 WHITESPACE@[17; 18) "\n" 17 WHITESPACE@17..18 "\n"
18 R_CURLY@[18; 19) "}" 18 R_CURLY@18..19 "}"
19 WHITESPACE@[19; 21) "\n\n" 19 WHITESPACE@19..21 "\n\n"
20 FN_DEF@[21; 44) 20 FN_DEF@21..44
21 ABI@[21; 31) 21 ABI@21..31
22 EXTERN_KW@[21; 27) "extern" 22 EXTERN_KW@21..27 "extern"
23 WHITESPACE@[27; 28) " " 23 WHITESPACE@27..28 " "
24 STRING@[28; 31) "\"C\"" 24 STRING@28..31 "\"C\""
25 WHITESPACE@[31; 32) " " 25 WHITESPACE@31..32 " "
26 FN_KW@[32; 34) "fn" 26 FN_KW@32..34 "fn"
27 WHITESPACE@[34; 35) " " 27 WHITESPACE@34..35 " "
28 NAME@[35; 38) 28 NAME@35..38
29 IDENT@[35; 38) "bar" 29 IDENT@35..38 "bar"
30 PARAM_LIST@[38; 40) 30 PARAM_LIST@38..40
31 L_PAREN@[38; 39) "(" 31 L_PAREN@38..39 "("
32 R_PAREN@[39; 40) ")" 32 R_PAREN@39..40 ")"
33 WHITESPACE@[40; 41) " " 33 WHITESPACE@40..41 " "
34 BLOCK_EXPR@[41; 44) 34 BLOCK_EXPR@41..44
35 BLOCK@[41; 44) 35 BLOCK@41..44
36 L_CURLY@[41; 42) "{" 36 L_CURLY@41..42 "{"
37 WHITESPACE@[42; 43) "\n" 37 WHITESPACE@42..43 "\n"
38 R_CURLY@[43; 44) "}" 38 R_CURLY@43..44 "}"
39 WHITESPACE@[44; 46) "\n\n" 39 WHITESPACE@44..46 "\n\n"
40 FN_DEF@[46; 70) 40 FN_DEF@46..70
41 ABI@[46; 57) 41 ABI@46..57
42 EXTERN_KW@[46; 52) "extern" 42 EXTERN_KW@46..52 "extern"
43 WHITESPACE@[52; 53) " " 43 WHITESPACE@52..53 " "
44 RAW_STRING@[53; 57) "r\"D\"" 44 RAW_STRING@53..57 "r\"D\""
45 WHITESPACE@[57; 58) " " 45 WHITESPACE@57..58 " "
46 FN_KW@[58; 60) "fn" 46 FN_KW@58..60 "fn"
47 WHITESPACE@[60; 61) " " 47 WHITESPACE@60..61 " "
48 NAME@[61; 64) 48 NAME@61..64
49 IDENT@[61; 64) "baz" 49 IDENT@61..64 "baz"
50 PARAM_LIST@[64; 66) 50 PARAM_LIST@64..66
51 L_PAREN@[64; 65) "(" 51 L_PAREN@64..65 "("
52 R_PAREN@[65; 66) ")" 52 R_PAREN@65..66 ")"
53 WHITESPACE@[66; 67) " " 53 WHITESPACE@66..67 " "
54 BLOCK_EXPR@[67; 70) 54 BLOCK_EXPR@67..70
55 BLOCK@[67; 70) 55 BLOCK@67..70
56 L_CURLY@[67; 68) "{" 56 L_CURLY@67..68 "{"
57 WHITESPACE@[68; 69) "\n" 57 WHITESPACE@68..69 "\n"
58 R_CURLY@[69; 70) "}" 58 R_CURLY@69..70 "}"
59 WHITESPACE@[70; 71) "\n" 59 WHITESPACE@70..71 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.rast b/crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.rast
index bbbd95fd9..26abae3b2 100644
--- a/crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0022_empty_extern_block.rast
@@ -1,21 +1,21 @@
1SOURCE_FILE@[0; 27) 1SOURCE_FILE@0..27
2 EXTERN_BLOCK@[0; 10) 2 EXTERN_BLOCK@0..10
3 ABI@[0; 6) 3 ABI@0..6
4 EXTERN_KW@[0; 6) "extern" 4 EXTERN_KW@0..6 "extern"
5 WHITESPACE@[6; 7) " " 5 WHITESPACE@6..7 " "
6 EXTERN_ITEM_LIST@[7; 10) 6 EXTERN_ITEM_LIST@7..10
7 L_CURLY@[7; 8) "{" 7 L_CURLY@7..8 "{"
8 WHITESPACE@[8; 9) "\n" 8 WHITESPACE@8..9 "\n"
9 R_CURLY@[9; 10) "}" 9 R_CURLY@9..10 "}"
10 WHITESPACE@[10; 12) "\n\n" 10 WHITESPACE@10..12 "\n\n"
11 EXTERN_BLOCK@[12; 26) 11 EXTERN_BLOCK@12..26
12 ABI@[12; 22) 12 ABI@12..22
13 EXTERN_KW@[12; 18) "extern" 13 EXTERN_KW@12..18 "extern"
14 WHITESPACE@[18; 19) " " 14 WHITESPACE@18..19 " "
15 STRING@[19; 22) "\"C\"" 15 STRING@19..22 "\"C\""
16 WHITESPACE@[22; 23) " " 16 WHITESPACE@22..23 " "
17 EXTERN_ITEM_LIST@[23; 26) 17 EXTERN_ITEM_LIST@23..26
18 L_CURLY@[23; 24) "{" 18 L_CURLY@23..24 "{"
19 WHITESPACE@[24; 25) "\n" 19 WHITESPACE@24..25 "\n"
20 R_CURLY@[25; 26) "}" 20 R_CURLY@25..26 "}"
21 WHITESPACE@[26; 27) "\n" 21 WHITESPACE@26..27 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0023_static_items.rast b/crates/ra_syntax/test_data/parser/ok/0023_static_items.rast
index dadf24fa6..97d90dc75 100644
--- a/crates/ra_syntax/test_data/parser/ok/0023_static_items.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0023_static_items.rast
@@ -1,41 +1,41 @@
1SOURCE_FILE@[0; 47) 1SOURCE_FILE@0..47
2 STATIC_DEF@[0; 20) 2 STATIC_DEF@0..20
3 STATIC_KW@[0; 6) "static" 3 STATIC_KW@0..6 "static"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 10) 5 NAME@7..10
6 IDENT@[7; 10) "FOO" 6 IDENT@7..10 "FOO"
7 COLON@[10; 11) ":" 7 COLON@10..11 ":"
8 WHITESPACE@[11; 12) " " 8 WHITESPACE@11..12 " "
9 PATH_TYPE@[12; 15) 9 PATH_TYPE@12..15
10 PATH@[12; 15) 10 PATH@12..15
11 PATH_SEGMENT@[12; 15) 11 PATH_SEGMENT@12..15
12 NAME_REF@[12; 15) 12 NAME_REF@12..15
13 IDENT@[12; 15) "u32" 13 IDENT@12..15 "u32"
14 WHITESPACE@[15; 16) " " 14 WHITESPACE@15..16 " "
15 EQ@[16; 17) "=" 15 EQ@16..17 "="
16 WHITESPACE@[17; 18) " " 16 WHITESPACE@17..18 " "
17 LITERAL@[18; 19) 17 LITERAL@18..19
18 INT_NUMBER@[18; 19) "1" 18 INT_NUMBER@18..19 "1"
19 SEMICOLON@[19; 20) ";" 19 SEMICOLON@19..20 ";"
20 WHITESPACE@[20; 21) "\n" 20 WHITESPACE@20..21 "\n"
21 STATIC_DEF@[21; 46) 21 STATIC_DEF@21..46
22 STATIC_KW@[21; 27) "static" 22 STATIC_KW@21..27 "static"
23 WHITESPACE@[27; 28) " " 23 WHITESPACE@27..28 " "
24 MUT_KW@[28; 31) "mut" 24 MUT_KW@28..31 "mut"
25 WHITESPACE@[31; 32) " " 25 WHITESPACE@31..32 " "
26 NAME@[32; 35) 26 NAME@32..35
27 IDENT@[32; 35) "BAR" 27 IDENT@32..35 "BAR"
28 COLON@[35; 36) ":" 28 COLON@35..36 ":"
29 WHITESPACE@[36; 37) " " 29 WHITESPACE@36..37 " "
30 PATH_TYPE@[37; 40) 30 PATH_TYPE@37..40
31 PATH@[37; 40) 31 PATH@37..40
32 PATH_SEGMENT@[37; 40) 32 PATH_SEGMENT@37..40
33 NAME_REF@[37; 40) 33 NAME_REF@37..40
34 IDENT@[37; 40) "i32" 34 IDENT@37..40 "i32"
35 WHITESPACE@[40; 41) " " 35 WHITESPACE@40..41 " "
36 EQ@[41; 42) "=" 36 EQ@41..42 "="
37 WHITESPACE@[42; 43) " " 37 WHITESPACE@42..43 " "
38 LITERAL@[43; 45) 38 LITERAL@43..45
39 INT_NUMBER@[43; 45) "92" 39 INT_NUMBER@43..45 "92"
40 SEMICOLON@[45; 46) ";" 40 SEMICOLON@45..46 ";"
41 WHITESPACE@[46; 47) "\n" 41 WHITESPACE@46..47 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0024_const_item.rast b/crates/ra_syntax/test_data/parser/ok/0024_const_item.rast
index 262e31f7f..d241f034c 100644
--- a/crates/ra_syntax/test_data/parser/ok/0024_const_item.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0024_const_item.rast
@@ -1,59 +1,59 @@
1SOURCE_FILE@[0; 64) 1SOURCE_FILE@0..64
2 CONST_DEF@[0; 17) 2 CONST_DEF@0..17
3 CONST_KW@[0; 5) "const" 3 CONST_KW@0..5 "const"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 UNDERSCORE@[6; 7) "_" 5 UNDERSCORE@6..7 "_"
6 COLON@[7; 8) ":" 6 COLON@7..8 ":"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 PATH_TYPE@[9; 12) 8 PATH_TYPE@9..12
9 PATH@[9; 12) 9 PATH@9..12
10 PATH_SEGMENT@[9; 12) 10 PATH_SEGMENT@9..12
11 NAME_REF@[9; 12) 11 NAME_REF@9..12
12 IDENT@[9; 12) "u32" 12 IDENT@9..12 "u32"
13 WHITESPACE@[12; 13) " " 13 WHITESPACE@12..13 " "
14 EQ@[13; 14) "=" 14 EQ@13..14 "="
15 WHITESPACE@[14; 15) " " 15 WHITESPACE@14..15 " "
16 LITERAL@[15; 16) 16 LITERAL@15..16
17 INT_NUMBER@[15; 16) "0" 17 INT_NUMBER@15..16 "0"
18 SEMICOLON@[16; 17) ";" 18 SEMICOLON@16..17 ";"
19 WHITESPACE@[17; 18) "\n" 19 WHITESPACE@17..18 "\n"
20 CONST_DEF@[18; 38) 20 CONST_DEF@18..38
21 CONST_KW@[18; 23) "const" 21 CONST_KW@18..23 "const"
22 WHITESPACE@[23; 24) " " 22 WHITESPACE@23..24 " "
23 NAME@[24; 27) 23 NAME@24..27
24 IDENT@[24; 27) "FOO" 24 IDENT@24..27 "FOO"
25 COLON@[27; 28) ":" 25 COLON@27..28 ":"
26 WHITESPACE@[28; 29) " " 26 WHITESPACE@28..29 " "
27 PATH_TYPE@[29; 32) 27 PATH_TYPE@29..32
28 PATH@[29; 32) 28 PATH@29..32
29 PATH_SEGMENT@[29; 32) 29 PATH_SEGMENT@29..32
30 NAME_REF@[29; 32) 30 NAME_REF@29..32
31 IDENT@[29; 32) "u32" 31 IDENT@29..32 "u32"
32 WHITESPACE@[32; 33) " " 32 WHITESPACE@32..33 " "
33 EQ@[33; 34) "=" 33 EQ@33..34 "="
34 WHITESPACE@[34; 35) " " 34 WHITESPACE@34..35 " "
35 LITERAL@[35; 37) 35 LITERAL@35..37
36 INT_NUMBER@[35; 37) "92" 36 INT_NUMBER@35..37 "92"
37 SEMICOLON@[37; 38) ";" 37 SEMICOLON@37..38 ";"
38 WHITESPACE@[38; 39) "\n" 38 WHITESPACE@38..39 "\n"
39 CONST_DEF@[39; 63) 39 CONST_DEF@39..63
40 CONST_KW@[39; 44) "const" 40 CONST_KW@39..44 "const"
41 WHITESPACE@[44; 45) " " 41 WHITESPACE@44..45 " "
42 MUT_KW@[45; 48) "mut" 42 MUT_KW@45..48 "mut"
43 WHITESPACE@[48; 49) " " 43 WHITESPACE@48..49 " "
44 NAME@[49; 52) 44 NAME@49..52
45 IDENT@[49; 52) "BAR" 45 IDENT@49..52 "BAR"
46 COLON@[52; 53) ":" 46 COLON@52..53 ":"
47 WHITESPACE@[53; 54) " " 47 WHITESPACE@53..54 " "
48 PATH_TYPE@[54; 57) 48 PATH_TYPE@54..57
49 PATH@[54; 57) 49 PATH@54..57
50 PATH_SEGMENT@[54; 57) 50 PATH_SEGMENT@54..57
51 NAME_REF@[54; 57) 51 NAME_REF@54..57
52 IDENT@[54; 57) "u32" 52 IDENT@54..57 "u32"
53 WHITESPACE@[57; 58) " " 53 WHITESPACE@57..58 " "
54 EQ@[58; 59) "=" 54 EQ@58..59 "="
55 WHITESPACE@[59; 60) " " 55 WHITESPACE@59..60 " "
56 LITERAL@[60; 62) 56 LITERAL@60..62
57 INT_NUMBER@[60; 62) "62" 57 INT_NUMBER@60..62 "62"
58 SEMICOLON@[62; 63) ";" 58 SEMICOLON@62..63 ";"
59 WHITESPACE@[63; 64) "\n" 59 WHITESPACE@63..64 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.rast b/crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.rast
index f5a7a1a5a..60af55837 100644
--- a/crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.rast
@@ -1,33 +1,33 @@
1SOURCE_FILE@[0; 35) 1SOURCE_FILE@0..35
2 FN_DEF@[0; 34) 2 FN_DEF@0..34
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 34) 11 BLOCK_EXPR@10..34
12 BLOCK@[10; 34) 12 BLOCK@10..34
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 FN_DEF@[16; 32) 15 FN_DEF@16..32
16 ABI@[16; 22) 16 ABI@16..22
17 EXTERN_KW@[16; 22) "extern" 17 EXTERN_KW@16..22 "extern"
18 WHITESPACE@[22; 23) " " 18 WHITESPACE@22..23 " "
19 FN_KW@[23; 25) "fn" 19 FN_KW@23..25 "fn"
20 WHITESPACE@[25; 26) " " 20 WHITESPACE@25..26 " "
21 NAME@[26; 27) 21 NAME@26..27
22 IDENT@[26; 27) "f" 22 IDENT@26..27 "f"
23 PARAM_LIST@[27; 29) 23 PARAM_LIST@27..29
24 L_PAREN@[27; 28) "(" 24 L_PAREN@27..28 "("
25 R_PAREN@[28; 29) ")" 25 R_PAREN@28..29 ")"
26 WHITESPACE@[29; 30) " " 26 WHITESPACE@29..30 " "
27 BLOCK_EXPR@[30; 32) 27 BLOCK_EXPR@30..32
28 BLOCK@[30; 32) 28 BLOCK@30..32
29 L_CURLY@[30; 31) "{" 29 L_CURLY@30..31 "{"
30 R_CURLY@[31; 32) "}" 30 R_CURLY@31..32 "}"
31 WHITESPACE@[32; 33) "\n" 31 WHITESPACE@32..33 "\n"
32 R_CURLY@[33; 34) "}" 32 R_CURLY@33..34 "}"
33 WHITESPACE@[34; 35) "\n" 33 WHITESPACE@34..35 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.rast b/crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.rast
index f9b1dcf1a..4432c0163 100644
--- a/crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.rast
@@ -1,32 +1,32 @@
1SOURCE_FILE@[0; 34) 1SOURCE_FILE@0..34
2 FN_DEF@[0; 33) 2 FN_DEF@0..33
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 33) 11 BLOCK_EXPR@10..33
12 BLOCK@[10; 33) 12 BLOCK@10..33
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 FN_DEF@[16; 31) 15 FN_DEF@16..31
16 CONST_KW@[16; 21) "const" 16 CONST_KW@16..21 "const"
17 WHITESPACE@[21; 22) " " 17 WHITESPACE@21..22 " "
18 FN_KW@[22; 24) "fn" 18 FN_KW@22..24 "fn"
19 WHITESPACE@[24; 25) " " 19 WHITESPACE@24..25 " "
20 NAME@[25; 26) 20 NAME@25..26
21 IDENT@[25; 26) "f" 21 IDENT@25..26 "f"
22 PARAM_LIST@[26; 28) 22 PARAM_LIST@26..28
23 L_PAREN@[26; 27) "(" 23 L_PAREN@26..27 "("
24 R_PAREN@[27; 28) ")" 24 R_PAREN@27..28 ")"
25 WHITESPACE@[28; 29) " " 25 WHITESPACE@28..29 " "
26 BLOCK_EXPR@[29; 31) 26 BLOCK_EXPR@29..31
27 BLOCK@[29; 31) 27 BLOCK@29..31
28 L_CURLY@[29; 30) "{" 28 L_CURLY@29..30 "{"
29 R_CURLY@[30; 31) "}" 29 R_CURLY@30..31 "}"
30 WHITESPACE@[31; 32) "\n" 30 WHITESPACE@31..32 "\n"
31 R_CURLY@[32; 33) "}" 31 R_CURLY@32..33 "}"
32 WHITESPACE@[33; 34) "\n" 32 WHITESPACE@33..34 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rast b/crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rast
index 9fb7b70a0..c0162c609 100644
--- a/crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.rast
@@ -1,43 +1,43 @@
1SOURCE_FILE@[0; 53) 1SOURCE_FILE@0..53
2 FN_DEF@[0; 52) 2 FN_DEF@0..52
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 52) 11 BLOCK_EXPR@10..52
12 BLOCK@[10; 52) 12 BLOCK@10..52
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 FN_DEF@[16; 32) 15 FN_DEF@16..32
16 UNSAFE_KW@[16; 22) "unsafe" 16 UNSAFE_KW@16..22 "unsafe"
17 WHITESPACE@[22; 23) " " 17 WHITESPACE@22..23 " "
18 FN_KW@[23; 25) "fn" 18 FN_KW@23..25 "fn"
19 WHITESPACE@[25; 26) " " 19 WHITESPACE@25..26 " "
20 NAME@[26; 27) 20 NAME@26..27
21 IDENT@[26; 27) "f" 21 IDENT@26..27 "f"
22 PARAM_LIST@[27; 29) 22 PARAM_LIST@27..29
23 L_PAREN@[27; 28) "(" 23 L_PAREN@27..28 "("
24 R_PAREN@[28; 29) ")" 24 R_PAREN@28..29 ")"
25 WHITESPACE@[29; 30) " " 25 WHITESPACE@29..30 " "
26 BLOCK_EXPR@[30; 32) 26 BLOCK_EXPR@30..32
27 BLOCK@[30; 32) 27 BLOCK@30..32
28 L_CURLY@[30; 31) "{" 28 L_CURLY@30..31 "{"
29 R_CURLY@[31; 32) "}" 29 R_CURLY@31..32 "}"
30 WHITESPACE@[32; 37) "\n " 30 WHITESPACE@32..37 "\n "
31 BLOCK_EXPR@[37; 50) 31 BLOCK_EXPR@37..50
32 UNSAFE_KW@[37; 43) "unsafe" 32 UNSAFE_KW@37..43 "unsafe"
33 WHITESPACE@[43; 44) " " 33 WHITESPACE@43..44 " "
34 BLOCK@[44; 50) 34 BLOCK@44..50
35 L_CURLY@[44; 45) "{" 35 L_CURLY@44..45 "{"
36 WHITESPACE@[45; 46) " " 36 WHITESPACE@45..46 " "
37 LITERAL@[46; 48) 37 LITERAL@46..48
38 INT_NUMBER@[46; 48) "92" 38 INT_NUMBER@46..48 "92"
39 WHITESPACE@[48; 49) " " 39 WHITESPACE@48..49 " "
40 R_CURLY@[49; 50) "}" 40 R_CURLY@49..50 "}"
41 WHITESPACE@[50; 51) "\n" 41 WHITESPACE@50..51 "\n"
42 R_CURLY@[51; 52) "}" 42 R_CURLY@51..52 "}"
43 WHITESPACE@[52; 53) "\n" 43 WHITESPACE@52..53 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.rast b/crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.rast
index 5542f7701..6c0daef52 100644
--- a/crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.rast
@@ -1,186 +1,186 @@
1SOURCE_FILE@[0; 248) 1SOURCE_FILE@0..248
2 FN_DEF@[0; 247) 2 FN_DEF@0..247
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 16) 5 NAME@3..16
6 IDENT@[3; 16) "binding_power" 6 IDENT@3..16 "binding_power"
7 PARAM_LIST@[16; 18) 7 PARAM_LIST@16..18
8 L_PAREN@[16; 17) "(" 8 L_PAREN@16..17 "("
9 R_PAREN@[17; 18) ")" 9 R_PAREN@17..18 ")"
10 WHITESPACE@[18; 19) " " 10 WHITESPACE@18..19 " "
11 BLOCK_EXPR@[19; 247) 11 BLOCK_EXPR@19..247
12 BLOCK@[19; 247) 12 BLOCK@19..247
13 L_CURLY@[19; 20) "{" 13 L_CURLY@19..20 "{"
14 WHITESPACE@[20; 25) "\n " 14 WHITESPACE@20..25 "\n "
15 LET_STMT@[25; 55) 15 LET_STMT@25..55
16 LET_KW@[25; 28) "let" 16 LET_KW@25..28 "let"
17 WHITESPACE@[28; 29) " " 17 WHITESPACE@28..29 " "
18 BIND_PAT@[29; 30) 18 BIND_PAT@29..30
19 NAME@[29; 30) 19 NAME@29..30
20 IDENT@[29; 30) "x" 20 IDENT@29..30 "x"
21 WHITESPACE@[30; 31) " " 21 WHITESPACE@30..31 " "
22 EQ@[31; 32) "=" 22 EQ@31..32 "="
23 WHITESPACE@[32; 33) " " 23 WHITESPACE@32..33 " "
24 BIN_EXPR@[33; 54) 24 BIN_EXPR@33..54
25 BIN_EXPR@[33; 46) 25 BIN_EXPR@33..46
26 LITERAL@[33; 34) 26 LITERAL@33..34
27 INT_NUMBER@[33; 34) "1" 27 INT_NUMBER@33..34 "1"
28 WHITESPACE@[34; 35) " " 28 WHITESPACE@34..35 " "
29 PLUS@[35; 36) "+" 29 PLUS@35..36 "+"
30 WHITESPACE@[36; 37) " " 30 WHITESPACE@36..37 " "
31 BIN_EXPR@[37; 46) 31 BIN_EXPR@37..46
32 BIN_EXPR@[37; 42) 32 BIN_EXPR@37..42
33 LITERAL@[37; 38) 33 LITERAL@37..38
34 INT_NUMBER@[37; 38) "2" 34 INT_NUMBER@37..38 "2"
35 WHITESPACE@[38; 39) " " 35 WHITESPACE@38..39 " "
36 STAR@[39; 40) "*" 36 STAR@39..40 "*"
37 WHITESPACE@[40; 41) " " 37 WHITESPACE@40..41 " "
38 LITERAL@[41; 42) 38 LITERAL@41..42
39 INT_NUMBER@[41; 42) "3" 39 INT_NUMBER@41..42 "3"
40 WHITESPACE@[42; 43) " " 40 WHITESPACE@42..43 " "
41 PERCENT@[43; 44) "%" 41 PERCENT@43..44 "%"
42 WHITESPACE@[44; 45) " " 42 WHITESPACE@44..45 " "
43 LITERAL@[45; 46) 43 LITERAL@45..46
44 INT_NUMBER@[45; 46) "4" 44 INT_NUMBER@45..46 "4"
45 WHITESPACE@[46; 47) " " 45 WHITESPACE@46..47 " "
46 MINUS@[47; 48) "-" 46 MINUS@47..48 "-"
47 WHITESPACE@[48; 49) " " 47 WHITESPACE@48..49 " "
48 BIN_EXPR@[49; 54) 48 BIN_EXPR@49..54
49 LITERAL@[49; 50) 49 LITERAL@49..50
50 INT_NUMBER@[49; 50) "5" 50 INT_NUMBER@49..50 "5"
51 WHITESPACE@[50; 51) " " 51 WHITESPACE@50..51 " "
52 SLASH@[51; 52) "/" 52 SLASH@51..52 "/"
53 WHITESPACE@[52; 53) " " 53 WHITESPACE@52..53 " "
54 LITERAL@[53; 54) 54 LITERAL@53..54
55 INT_NUMBER@[53; 54) "6" 55 INT_NUMBER@53..54 "6"
56 SEMICOLON@[54; 55) ";" 56 SEMICOLON@54..55 ";"
57 WHITESPACE@[55; 60) "\n " 57 WHITESPACE@55..60 "\n "
58 EXPR_STMT@[60; 70) 58 EXPR_STMT@60..70
59 BIN_EXPR@[60; 69) 59 BIN_EXPR@60..69
60 LITERAL@[60; 61) 60 LITERAL@60..61
61 INT_NUMBER@[60; 61) "1" 61 INT_NUMBER@60..61 "1"
62 WHITESPACE@[61; 62) " " 62 WHITESPACE@61..62 " "
63 PLUS@[62; 63) "+" 63 PLUS@62..63 "+"
64 WHITESPACE@[63; 64) " " 64 WHITESPACE@63..64 " "
65 BIN_EXPR@[64; 69) 65 BIN_EXPR@64..69
66 LITERAL@[64; 65) 66 LITERAL@64..65
67 INT_NUMBER@[64; 65) "2" 67 INT_NUMBER@64..65 "2"
68 WHITESPACE@[65; 66) " " 68 WHITESPACE@65..66 " "
69 STAR@[66; 67) "*" 69 STAR@66..67 "*"
70 WHITESPACE@[67; 68) " " 70 WHITESPACE@67..68 " "
71 LITERAL@[68; 69) 71 LITERAL@68..69
72 INT_NUMBER@[68; 69) "3" 72 INT_NUMBER@68..69 "3"
73 SEMICOLON@[69; 70) ";" 73 SEMICOLON@69..70 ";"
74 WHITESPACE@[70; 75) "\n " 74 WHITESPACE@70..75 "\n "
75 EXPR_STMT@[75; 86) 75 EXPR_STMT@75..86
76 BIN_EXPR@[75; 85) 76 BIN_EXPR@75..85
77 LITERAL@[75; 76) 77 LITERAL@75..76
78 INT_NUMBER@[75; 76) "1" 78 INT_NUMBER@75..76 "1"
79 WHITESPACE@[76; 77) " " 79 WHITESPACE@76..77 " "
80 SHL@[77; 79) "<<" 80 SHL@77..79 "<<"
81 WHITESPACE@[79; 80) " " 81 WHITESPACE@79..80 " "
82 BIN_EXPR@[80; 85) 82 BIN_EXPR@80..85
83 LITERAL@[80; 81) 83 LITERAL@80..81
84 INT_NUMBER@[80; 81) "2" 84 INT_NUMBER@80..81 "2"
85 WHITESPACE@[81; 82) " " 85 WHITESPACE@81..82 " "
86 PLUS@[82; 83) "+" 86 PLUS@82..83 "+"
87 WHITESPACE@[83; 84) " " 87 WHITESPACE@83..84 " "
88 LITERAL@[84; 85) 88 LITERAL@84..85
89 INT_NUMBER@[84; 85) "3" 89 INT_NUMBER@84..85 "3"
90 SEMICOLON@[85; 86) ";" 90 SEMICOLON@85..86 ";"
91 WHITESPACE@[86; 91) "\n " 91 WHITESPACE@86..91 "\n "
92 EXPR_STMT@[91; 102) 92 EXPR_STMT@91..102
93 BIN_EXPR@[91; 101) 93 BIN_EXPR@91..101
94 LITERAL@[91; 92) 94 LITERAL@91..92
95 INT_NUMBER@[91; 92) "1" 95 INT_NUMBER@91..92 "1"
96 WHITESPACE@[92; 93) " " 96 WHITESPACE@92..93 " "
97 AMP@[93; 94) "&" 97 AMP@93..94 "&"
98 WHITESPACE@[94; 95) " " 98 WHITESPACE@94..95 " "
99 BIN_EXPR@[95; 101) 99 BIN_EXPR@95..101
100 LITERAL@[95; 96) 100 LITERAL@95..96
101 INT_NUMBER@[95; 96) "2" 101 INT_NUMBER@95..96 "2"
102 WHITESPACE@[96; 97) " " 102 WHITESPACE@96..97 " "
103 SHR@[97; 99) ">>" 103 SHR@97..99 ">>"
104 WHITESPACE@[99; 100) " " 104 WHITESPACE@99..100 " "
105 LITERAL@[100; 101) 105 LITERAL@100..101
106 INT_NUMBER@[100; 101) "3" 106 INT_NUMBER@100..101 "3"
107 SEMICOLON@[101; 102) ";" 107 SEMICOLON@101..102 ";"
108 WHITESPACE@[102; 107) "\n " 108 WHITESPACE@102..107 "\n "
109 EXPR_STMT@[107; 117) 109 EXPR_STMT@107..117
110 BIN_EXPR@[107; 116) 110 BIN_EXPR@107..116
111 LITERAL@[107; 108) 111 LITERAL@107..108
112 INT_NUMBER@[107; 108) "1" 112 INT_NUMBER@107..108 "1"
113 WHITESPACE@[108; 109) " " 113 WHITESPACE@108..109 " "
114 CARET@[109; 110) "^" 114 CARET@109..110 "^"
115 WHITESPACE@[110; 111) " " 115 WHITESPACE@110..111 " "
116 BIN_EXPR@[111; 116) 116 BIN_EXPR@111..116
117 LITERAL@[111; 112) 117 LITERAL@111..112
118 INT_NUMBER@[111; 112) "2" 118 INT_NUMBER@111..112 "2"
119 WHITESPACE@[112; 113) " " 119 WHITESPACE@112..113 " "
120 AMP@[113; 114) "&" 120 AMP@113..114 "&"
121 WHITESPACE@[114; 115) " " 121 WHITESPACE@114..115 " "
122 LITERAL@[115; 116) 122 LITERAL@115..116
123 INT_NUMBER@[115; 116) "3" 123 INT_NUMBER@115..116 "3"
124 SEMICOLON@[116; 117) ";" 124 SEMICOLON@116..117 ";"
125 WHITESPACE@[117; 122) "\n " 125 WHITESPACE@117..122 "\n "
126 EXPR_STMT@[122; 132) 126 EXPR_STMT@122..132
127 BIN_EXPR@[122; 131) 127 BIN_EXPR@122..131
128 LITERAL@[122; 123) 128 LITERAL@122..123
129 INT_NUMBER@[122; 123) "1" 129 INT_NUMBER@122..123 "1"
130 WHITESPACE@[123; 124) " " 130 WHITESPACE@123..124 " "
131 PIPE@[124; 125) "|" 131 PIPE@124..125 "|"
132 WHITESPACE@[125; 126) " " 132 WHITESPACE@125..126 " "
133 BIN_EXPR@[126; 131) 133 BIN_EXPR@126..131
134 LITERAL@[126; 127) 134 LITERAL@126..127
135 INT_NUMBER@[126; 127) "2" 135 INT_NUMBER@126..127 "2"
136 WHITESPACE@[127; 128) " " 136 WHITESPACE@127..128 " "
137 CARET@[128; 129) "^" 137 CARET@128..129 "^"
138 WHITESPACE@[129; 130) " " 138 WHITESPACE@129..130 " "
139 LITERAL@[130; 131) 139 LITERAL@130..131
140 INT_NUMBER@[130; 131) "3" 140 INT_NUMBER@130..131 "3"
141 SEMICOLON@[131; 132) ";" 141 SEMICOLON@131..132 ";"
142 WHITESPACE@[132; 137) "\n " 142 WHITESPACE@132..137 "\n "
143 EXPR_STMT@[137; 148) 143 EXPR_STMT@137..148
144 BIN_EXPR@[137; 147) 144 BIN_EXPR@137..147
145 LITERAL@[137; 138) 145 LITERAL@137..138
146 INT_NUMBER@[137; 138) "1" 146 INT_NUMBER@137..138 "1"
147 WHITESPACE@[138; 139) " " 147 WHITESPACE@138..139 " "
148 EQ2@[139; 141) "==" 148 EQ2@139..141 "=="
149 WHITESPACE@[141; 142) " " 149 WHITESPACE@141..142 " "
150 BIN_EXPR@[142; 147) 150 BIN_EXPR@142..147
151 LITERAL@[142; 143) 151 LITERAL@142..143
152 INT_NUMBER@[142; 143) "2" 152 INT_NUMBER@142..143 "2"
153 WHITESPACE@[143; 144) " " 153 WHITESPACE@143..144 " "
154 PIPE@[144; 145) "|" 154 PIPE@144..145 "|"
155 WHITESPACE@[145; 146) " " 155 WHITESPACE@145..146 " "
156 LITERAL@[146; 147) 156 LITERAL@146..147
157 INT_NUMBER@[146; 147) "3" 157 INT_NUMBER@146..147 "3"
158 SEMICOLON@[147; 148) ";" 158 SEMICOLON@147..148 ";"
159 WHITESPACE@[148; 153) "\n " 159 WHITESPACE@148..153 "\n "
160 EXPR_STMT@[153; 165) 160 EXPR_STMT@153..165
161 BIN_EXPR@[153; 164) 161 BIN_EXPR@153..164
162 LITERAL@[153; 154) 162 LITERAL@153..154
163 INT_NUMBER@[153; 154) "1" 163 INT_NUMBER@153..154 "1"
164 WHITESPACE@[154; 155) " " 164 WHITESPACE@154..155 " "
165 AMP2@[155; 157) "&&" 165 AMP2@155..157 "&&"
166 WHITESPACE@[157; 158) " " 166 WHITESPACE@157..158 " "
167 BIN_EXPR@[158; 164) 167 BIN_EXPR@158..164
168 LITERAL@[158; 159) 168 LITERAL@158..159
169 INT_NUMBER@[158; 159) "2" 169 INT_NUMBER@158..159 "2"
170 WHITESPACE@[159; 160) " " 170 WHITESPACE@159..160 " "
171 EQ2@[160; 162) "==" 171 EQ2@160..162 "=="
172 WHITESPACE@[162; 163) " " 172 WHITESPACE@162..163 " "
173 LITERAL@[163; 164) 173 LITERAL@163..164
174 INT_NUMBER@[163; 164) "3" 174 INT_NUMBER@163..164 "3"
175 SEMICOLON@[164; 165) ";" 175 SEMICOLON@164..165 ";"
176 WHITESPACE@[165; 170) "\n " 176 WHITESPACE@165..170 "\n "
177 COMMENT@[170; 184) "//1 || 2 && 2;" 177 COMMENT@170..184 "//1 || 2 && 2;"
178 WHITESPACE@[184; 189) "\n " 178 WHITESPACE@184..189 "\n "
179 COMMENT@[189; 203) "//1 .. 2 || 3;" 179 COMMENT@189..203 "//1 .. 2 || 3;"
180 WHITESPACE@[203; 208) "\n " 180 WHITESPACE@203..208 "\n "
181 COMMENT@[208; 221) "//1 = 2 .. 3;" 181 COMMENT@208..221 "//1 = 2 .. 3;"
182 WHITESPACE@[221; 226) "\n " 182 WHITESPACE@221..226 "\n "
183 COMMENT@[226; 245) "//---&*1 - --2 * 9;" 183 COMMENT@226..245 "//---&*1 - --2 * 9;"
184 WHITESPACE@[245; 246) "\n" 184 WHITESPACE@245..246 "\n"
185 R_CURLY@[246; 247) "}" 185 R_CURLY@246..247 "}"
186 WHITESPACE@[247; 248) "\n" 186 WHITESPACE@247..248 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0029_range_forms.rast b/crates/ra_syntax/test_data/parser/ok/0029_range_forms.rast
index 78056aa95..8177bd89b 100644
--- a/crates/ra_syntax/test_data/parser/ok/0029_range_forms.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0029_range_forms.rast
@@ -1,152 +1,152 @@
1SOURCE_FILE@[0; 153) 1SOURCE_FILE@0..153
2 FN_DEF@[0; 152) 2 FN_DEF@0..152
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 152) 11 BLOCK_EXPR@9..152
12 BLOCK@[9; 152) 12 BLOCK@9..152
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 23) 15 EXPR_STMT@15..23
16 RANGE_EXPR@[15; 22) 16 RANGE_EXPR@15..22
17 DOT2@[15; 17) ".." 17 DOT2@15..17 ".."
18 BIN_EXPR@[17; 22) 18 BIN_EXPR@17..22
19 LITERAL@[17; 18) 19 LITERAL@17..18
20 INT_NUMBER@[17; 18) "1" 20 INT_NUMBER@17..18 "1"
21 WHITESPACE@[18; 19) " " 21 WHITESPACE@18..19 " "
22 PLUS@[19; 20) "+" 22 PLUS@19..20 "+"
23 WHITESPACE@[20; 21) " " 23 WHITESPACE@20..21 " "
24 LITERAL@[21; 22) 24 LITERAL@21..22
25 INT_NUMBER@[21; 22) "1" 25 INT_NUMBER@21..22 "1"
26 SEMICOLON@[22; 23) ";" 26 SEMICOLON@22..23 ";"
27 WHITESPACE@[23; 28) "\n " 27 WHITESPACE@23..28 "\n "
28 EXPR_STMT@[28; 36) 28 EXPR_STMT@28..36
29 BIN_EXPR@[28; 35) 29 BIN_EXPR@28..35
30 RANGE_EXPR@[28; 31) 30 RANGE_EXPR@28..31
31 DOT2@[28; 30) ".." 31 DOT2@28..30 ".."
32 PATH_EXPR@[30; 31) 32 PATH_EXPR@30..31
33 PATH@[30; 31) 33 PATH@30..31
34 PATH_SEGMENT@[30; 31) 34 PATH_SEGMENT@30..31
35 NAME_REF@[30; 31) 35 NAME_REF@30..31
36 IDENT@[30; 31) "z" 36 IDENT@30..31 "z"
37 WHITESPACE@[31; 32) " " 37 WHITESPACE@31..32 " "
38 EQ@[32; 33) "=" 38 EQ@32..33 "="
39 WHITESPACE@[33; 34) " " 39 WHITESPACE@33..34 " "
40 LITERAL@[34; 35) 40 LITERAL@34..35
41 INT_NUMBER@[34; 35) "2" 41 INT_NUMBER@34..35 "2"
42 SEMICOLON@[35; 36) ";" 42 SEMICOLON@35..36 ";"
43 WHITESPACE@[36; 41) "\n " 43 WHITESPACE@36..41 "\n "
44 EXPR_STMT@[41; 59) 44 EXPR_STMT@41..59
45 BIN_EXPR@[41; 58) 45 BIN_EXPR@41..58
46 PATH_EXPR@[41; 42) 46 PATH_EXPR@41..42
47 PATH@[41; 42) 47 PATH@41..42
48 PATH_SEGMENT@[41; 42) 48 PATH_SEGMENT@41..42
49 NAME_REF@[41; 42) 49 NAME_REF@41..42
50 IDENT@[41; 42) "x" 50 IDENT@41..42 "x"
51 WHITESPACE@[42; 43) " " 51 WHITESPACE@42..43 " "
52 EQ@[43; 44) "=" 52 EQ@43..44 "="
53 WHITESPACE@[44; 45) " " 53 WHITESPACE@44..45 " "
54 RANGE_EXPR@[45; 58) 54 RANGE_EXPR@45..58
55 LITERAL@[45; 50) 55 LITERAL@45..50
56 FALSE_KW@[45; 50) "false" 56 FALSE_KW@45..50 "false"
57 DOT2@[50; 52) ".." 57 DOT2@50..52 ".."
58 BIN_EXPR@[52; 58) 58 BIN_EXPR@52..58
59 LITERAL@[52; 53) 59 LITERAL@52..53
60 INT_NUMBER@[52; 53) "1" 60 INT_NUMBER@52..53 "1"
61 WHITESPACE@[53; 54) " " 61 WHITESPACE@53..54 " "
62 EQ2@[54; 56) "==" 62 EQ2@54..56 "=="
63 WHITESPACE@[56; 57) " " 63 WHITESPACE@56..57 " "
64 LITERAL@[57; 58) 64 LITERAL@57..58
65 INT_NUMBER@[57; 58) "1" 65 INT_NUMBER@57..58 "1"
66 SEMICOLON@[58; 59) ";" 66 SEMICOLON@58..59 ";"
67 WHITESPACE@[59; 64) "\n " 67 WHITESPACE@59..64 "\n "
68 LET_STMT@[64; 76) 68 LET_STMT@64..76
69 LET_KW@[64; 67) "let" 69 LET_KW@64..67 "let"
70 WHITESPACE@[67; 68) " " 70 WHITESPACE@67..68 " "
71 BIND_PAT@[68; 69) 71 BIND_PAT@68..69
72 NAME@[68; 69) 72 NAME@68..69
73 IDENT@[68; 69) "x" 73 IDENT@68..69 "x"
74 WHITESPACE@[69; 70) " " 74 WHITESPACE@69..70 " "
75 EQ@[70; 71) "=" 75 EQ@70..71 "="
76 WHITESPACE@[71; 72) " " 76 WHITESPACE@71..72 " "
77 RANGE_EXPR@[72; 75) 77 RANGE_EXPR@72..75
78 LITERAL@[72; 73) 78 LITERAL@72..73
79 INT_NUMBER@[72; 73) "1" 79 INT_NUMBER@72..73 "1"
80 DOT2@[73; 75) ".." 80 DOT2@73..75 ".."
81 SEMICOLON@[75; 76) ";" 81 SEMICOLON@75..76 ";"
82 WHITESPACE@[76; 86) "\n \n " 82 WHITESPACE@76..86 "\n \n "
83 EXPR_STMT@[86; 95) 83 EXPR_STMT@86..95
84 RANGE_EXPR@[86; 94) 84 RANGE_EXPR@86..94
85 DOT2EQ@[86; 89) "..=" 85 DOT2EQ@86..89 "..="
86 BIN_EXPR@[89; 94) 86 BIN_EXPR@89..94
87 LITERAL@[89; 90) 87 LITERAL@89..90
88 INT_NUMBER@[89; 90) "1" 88 INT_NUMBER@89..90 "1"
89 WHITESPACE@[90; 91) " " 89 WHITESPACE@90..91 " "
90 PLUS@[91; 92) "+" 90 PLUS@91..92 "+"
91 WHITESPACE@[92; 93) " " 91 WHITESPACE@92..93 " "
92 LITERAL@[93; 94) 92 LITERAL@93..94
93 INT_NUMBER@[93; 94) "1" 93 INT_NUMBER@93..94 "1"
94 SEMICOLON@[94; 95) ";" 94 SEMICOLON@94..95 ";"
95 WHITESPACE@[95; 100) "\n " 95 WHITESPACE@95..100 "\n "
96 EXPR_STMT@[100; 109) 96 EXPR_STMT@100..109
97 BIN_EXPR@[100; 108) 97 BIN_EXPR@100..108
98 RANGE_EXPR@[100; 104) 98 RANGE_EXPR@100..104
99 DOT2EQ@[100; 103) "..=" 99 DOT2EQ@100..103 "..="
100 PATH_EXPR@[103; 104) 100 PATH_EXPR@103..104
101 PATH@[103; 104) 101 PATH@103..104
102 PATH_SEGMENT@[103; 104) 102 PATH_SEGMENT@103..104
103 NAME_REF@[103; 104) 103 NAME_REF@103..104
104 IDENT@[103; 104) "z" 104 IDENT@103..104 "z"
105 WHITESPACE@[104; 105) " " 105 WHITESPACE@104..105 " "
106 EQ@[105; 106) "=" 106 EQ@105..106 "="
107 WHITESPACE@[106; 107) " " 107 WHITESPACE@106..107 " "
108 LITERAL@[107; 108) 108 LITERAL@107..108
109 INT_NUMBER@[107; 108) "2" 109 INT_NUMBER@107..108 "2"
110 SEMICOLON@[108; 109) ";" 110 SEMICOLON@108..109 ";"
111 WHITESPACE@[109; 114) "\n " 111 WHITESPACE@109..114 "\n "
112 EXPR_STMT@[114; 133) 112 EXPR_STMT@114..133
113 BIN_EXPR@[114; 132) 113 BIN_EXPR@114..132
114 PATH_EXPR@[114; 115) 114 PATH_EXPR@114..115
115 PATH@[114; 115) 115 PATH@114..115
116 PATH_SEGMENT@[114; 115) 116 PATH_SEGMENT@114..115
117 NAME_REF@[114; 115) 117 NAME_REF@114..115
118 IDENT@[114; 115) "x" 118 IDENT@114..115 "x"
119 WHITESPACE@[115; 116) " " 119 WHITESPACE@115..116 " "
120 EQ@[116; 117) "=" 120 EQ@116..117 "="
121 WHITESPACE@[117; 118) " " 121 WHITESPACE@117..118 " "
122 RANGE_EXPR@[118; 132) 122 RANGE_EXPR@118..132
123 LITERAL@[118; 123) 123 LITERAL@118..123
124 FALSE_KW@[118; 123) "false" 124 FALSE_KW@118..123 "false"
125 DOT2EQ@[123; 126) "..=" 125 DOT2EQ@123..126 "..="
126 BIN_EXPR@[126; 132) 126 BIN_EXPR@126..132
127 LITERAL@[126; 127) 127 LITERAL@126..127
128 INT_NUMBER@[126; 127) "1" 128 INT_NUMBER@126..127 "1"
129 WHITESPACE@[127; 128) " " 129 WHITESPACE@127..128 " "
130 EQ2@[128; 130) "==" 130 EQ2@128..130 "=="
131 WHITESPACE@[130; 131) " " 131 WHITESPACE@130..131 " "
132 LITERAL@[131; 132) 132 LITERAL@131..132
133 INT_NUMBER@[131; 132) "1" 133 INT_NUMBER@131..132 "1"
134 SEMICOLON@[132; 133) ";" 134 SEMICOLON@132..133 ";"
135 WHITESPACE@[133; 138) "\n " 135 WHITESPACE@133..138 "\n "
136 LET_STMT@[138; 150) 136 LET_STMT@138..150
137 LET_KW@[138; 141) "let" 137 LET_KW@138..141 "let"
138 WHITESPACE@[141; 142) " " 138 WHITESPACE@141..142 " "
139 BIND_PAT@[142; 143) 139 BIND_PAT@142..143
140 NAME@[142; 143) 140 NAME@142..143
141 IDENT@[142; 143) "x" 141 IDENT@142..143 "x"
142 WHITESPACE@[143; 144) " " 142 WHITESPACE@143..144 " "
143 EQ@[144; 145) "=" 143 EQ@144..145 "="
144 WHITESPACE@[145; 146) " " 144 WHITESPACE@145..146 " "
145 RANGE_EXPR@[146; 149) 145 RANGE_EXPR@146..149
146 LITERAL@[146; 147) 146 LITERAL@146..147
147 INT_NUMBER@[146; 147) "1" 147 INT_NUMBER@146..147 "1"
148 DOT2@[147; 149) ".." 148 DOT2@147..149 ".."
149 SEMICOLON@[149; 150) ";" 149 SEMICOLON@149..150 ";"
150 WHITESPACE@[150; 151) "\n" 150 WHITESPACE@150..151 "\n"
151 R_CURLY@[151; 152) "}" 151 R_CURLY@151..152 "}"
152 WHITESPACE@[152; 153) "\n" 152 WHITESPACE@152..153 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.rast b/crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.rast
index 4e583c6e8..953930f6c 100644
--- a/crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.rast
@@ -1,64 +1,64 @@
1SOURCE_FILE@[0; 112) 1SOURCE_FILE@0..112
2 FN_DEF@[0; 111) 2 FN_DEF@0..111
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 111) 11 BLOCK_EXPR@10..111
12 BLOCK@[10; 111) 12 BLOCK@10..111
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 LET_STMT@[16; 31) 15 LET_STMT@16..31
16 LET_KW@[16; 19) "let" 16 LET_KW@16..19 "let"
17 WHITESPACE@[19; 20) " " 17 WHITESPACE@19..20 " "
18 PLACEHOLDER_PAT@[20; 21) 18 PLACEHOLDER_PAT@20..21
19 UNDERSCORE@[20; 21) "_" 19 UNDERSCORE@20..21 "_"
20 WHITESPACE@[21; 22) " " 20 WHITESPACE@21..22 " "
21 EQ@[22; 23) "=" 21 EQ@22..23 "="
22 WHITESPACE@[23; 24) " " 22 WHITESPACE@23..24 " "
23 LITERAL@[24; 30) 23 LITERAL@24..30
24 CHAR@[24; 30) "\'c\'u32" 24 CHAR@24..30 "\'c\'u32"
25 SEMICOLON@[30; 31) ";" 25 SEMICOLON@30..31 ";"
26 WHITESPACE@[31; 36) "\n " 26 WHITESPACE@31..36 "\n "
27 LET_STMT@[36; 60) 27 LET_STMT@36..60
28 LET_KW@[36; 39) "let" 28 LET_KW@36..39 "let"
29 WHITESPACE@[39; 40) " " 29 WHITESPACE@39..40 " "
30 PLACEHOLDER_PAT@[40; 41) 30 PLACEHOLDER_PAT@40..41
31 UNDERSCORE@[40; 41) "_" 31 UNDERSCORE@40..41 "_"
32 WHITESPACE@[41; 42) " " 32 WHITESPACE@41..42 " "
33 EQ@[42; 43) "=" 33 EQ@42..43 "="
34 WHITESPACE@[43; 44) " " 34 WHITESPACE@43..44 " "
35 LITERAL@[44; 59) 35 LITERAL@44..59
36 STRING@[44; 59) "\"string\"invalid" 36 STRING@44..59 "\"string\"invalid"
37 SEMICOLON@[59; 60) ";" 37 SEMICOLON@59..60 ";"
38 WHITESPACE@[60; 65) "\n " 38 WHITESPACE@60..65 "\n "
39 LET_STMT@[65; 83) 39 LET_STMT@65..83
40 LET_KW@[65; 68) "let" 40 LET_KW@65..68 "let"
41 WHITESPACE@[68; 69) " " 41 WHITESPACE@68..69 " "
42 PLACEHOLDER_PAT@[69; 70) 42 PLACEHOLDER_PAT@69..70
43 UNDERSCORE@[69; 70) "_" 43 UNDERSCORE@69..70 "_"
44 WHITESPACE@[70; 71) " " 44 WHITESPACE@70..71 " "
45 EQ@[71; 72) "=" 45 EQ@71..72 "="
46 WHITESPACE@[72; 73) " " 46 WHITESPACE@72..73 " "
47 LITERAL@[73; 82) 47 LITERAL@73..82
48 BYTE@[73; 82) "b\'b\'_suff" 48 BYTE@73..82 "b\'b\'_suff"
49 SEMICOLON@[82; 83) ";" 49 SEMICOLON@82..83 ";"
50 WHITESPACE@[83; 88) "\n " 50 WHITESPACE@83..88 "\n "
51 LET_STMT@[88; 109) 51 LET_STMT@88..109
52 LET_KW@[88; 91) "let" 52 LET_KW@88..91 "let"
53 WHITESPACE@[91; 92) " " 53 WHITESPACE@91..92 " "
54 PLACEHOLDER_PAT@[92; 93) 54 PLACEHOLDER_PAT@92..93
55 UNDERSCORE@[92; 93) "_" 55 UNDERSCORE@92..93 "_"
56 WHITESPACE@[93; 94) " " 56 WHITESPACE@93..94 " "
57 EQ@[94; 95) "=" 57 EQ@94..95 "="
58 WHITESPACE@[95; 96) " " 58 WHITESPACE@95..96 " "
59 LITERAL@[96; 108) 59 LITERAL@96..108
60 BYTE_STRING@[96; 108) "b\"bs\"invalid" 60 BYTE_STRING@96..108 "b\"bs\"invalid"
61 SEMICOLON@[108; 109) ";" 61 SEMICOLON@108..109 ";"
62 WHITESPACE@[109; 110) "\n" 62 WHITESPACE@109..110 "\n"
63 R_CURLY@[110; 111) "}" 63 R_CURLY@110..111 "}"
64 WHITESPACE@[111; 112) "\n" 64 WHITESPACE@111..112 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0030_traits.rast b/crates/ra_syntax/test_data/parser/ok/0030_traits.rast
index 4131cd81a..0aadc11a4 100644
--- a/crates/ra_syntax/test_data/parser/ok/0030_traits.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0030_traits.rast
@@ -1,61 +1,61 @@
1SOURCE_FILE@[0; 96) 1SOURCE_FILE@0..96
2 TRAIT_DEF@[0; 36) 2 TRAIT_DEF@0..36
3 TRAIT_KW@[0; 5) "trait" 3 TRAIT_KW@0..5 "trait"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 NAME@[6; 14) 5 NAME@6..14
6 IDENT@[6; 14) "Runnable" 6 IDENT@6..14 "Runnable"
7 WHITESPACE@[14; 15) " " 7 WHITESPACE@14..15 " "
8 ITEM_LIST@[15; 36) 8 ITEM_LIST@15..36
9 L_CURLY@[15; 16) "{" 9 L_CURLY@15..16 "{"
10 WHITESPACE@[16; 21) "\n " 10 WHITESPACE@16..21 "\n "
11 FN_DEF@[21; 34) 11 FN_DEF@21..34
12 FN_KW@[21; 23) "fn" 12 FN_KW@21..23 "fn"
13 WHITESPACE@[23; 24) " " 13 WHITESPACE@23..24 " "
14 NAME@[24; 31) 14 NAME@24..31
15 IDENT@[24; 31) "handler" 15 IDENT@24..31 "handler"
16 PARAM_LIST@[31; 33) 16 PARAM_LIST@31..33
17 L_PAREN@[31; 32) "(" 17 L_PAREN@31..32 "("
18 R_PAREN@[32; 33) ")" 18 R_PAREN@32..33 ")"
19 SEMICOLON@[33; 34) ";" 19 SEMICOLON@33..34 ";"
20 WHITESPACE@[34; 35) "\n" 20 WHITESPACE@34..35 "\n"
21 R_CURLY@[35; 36) "}" 21 R_CURLY@35..36 "}"
22 WHITESPACE@[36; 38) "\n\n" 22 WHITESPACE@36..38 "\n\n"
23 TRAIT_DEF@[38; 95) 23 TRAIT_DEF@38..95
24 TRAIT_KW@[38; 43) "trait" 24 TRAIT_KW@38..43 "trait"
25 WHITESPACE@[43; 44) " " 25 WHITESPACE@43..44 " "
26 NAME@[44; 57) 26 NAME@44..57
27 IDENT@[44; 57) "TraitWithExpr" 27 IDENT@44..57 "TraitWithExpr"
28 WHITESPACE@[57; 58) " " 28 WHITESPACE@57..58 " "
29 ITEM_LIST@[58; 95) 29 ITEM_LIST@58..95
30 L_CURLY@[58; 59) "{" 30 L_CURLY@58..59 "{"
31 WHITESPACE@[59; 64) "\n " 31 WHITESPACE@59..64 "\n "
32 FN_DEF@[64; 93) 32 FN_DEF@64..93
33 FN_KW@[64; 66) "fn" 33 FN_KW@64..66 "fn"
34 WHITESPACE@[66; 67) " " 34 WHITESPACE@66..67 " "
35 NAME@[67; 79) 35 NAME@67..79
36 IDENT@[67; 79) "fn_with_expr" 36 IDENT@67..79 "fn_with_expr"
37 PARAM_LIST@[79; 92) 37 PARAM_LIST@79..92
38 L_PAREN@[79; 80) "(" 38 L_PAREN@79..80 "("
39 PARAM@[80; 91) 39 PARAM@80..91
40 BIND_PAT@[80; 81) 40 BIND_PAT@80..81
41 NAME@[80; 81) 41 NAME@80..81
42 IDENT@[80; 81) "x" 42 IDENT@80..81 "x"
43 COLON@[81; 82) ":" 43 COLON@81..82 ":"
44 WHITESPACE@[82; 83) " " 44 WHITESPACE@82..83 " "
45 ARRAY_TYPE@[83; 91) 45 ARRAY_TYPE@83..91
46 L_BRACK@[83; 84) "[" 46 L_BRACK@83..84 "["
47 PATH_TYPE@[84; 87) 47 PATH_TYPE@84..87
48 PATH@[84; 87) 48 PATH@84..87
49 PATH_SEGMENT@[84; 87) 49 PATH_SEGMENT@84..87
50 NAME_REF@[84; 87) 50 NAME_REF@84..87
51 IDENT@[84; 87) "i32" 51 IDENT@84..87 "i32"
52 SEMICOLON@[87; 88) ";" 52 SEMICOLON@87..88 ";"
53 WHITESPACE@[88; 89) " " 53 WHITESPACE@88..89 " "
54 LITERAL@[89; 90) 54 LITERAL@89..90
55 INT_NUMBER@[89; 90) "1" 55 INT_NUMBER@89..90 "1"
56 R_BRACK@[90; 91) "]" 56 R_BRACK@90..91 "]"
57 R_PAREN@[91; 92) ")" 57 R_PAREN@91..92 ")"
58 SEMICOLON@[92; 93) ";" 58 SEMICOLON@92..93 ";"
59 WHITESPACE@[93; 94) "\n" 59 WHITESPACE@93..94 "\n"
60 R_CURLY@[94; 95) "}" 60 R_CURLY@94..95 "}"
61 WHITESPACE@[95; 96) "\n" 61 WHITESPACE@95..96 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0031_extern.rast b/crates/ra_syntax/test_data/parser/ok/0031_extern.rast
index 23757df52..ea285f52f 100644
--- a/crates/ra_syntax/test_data/parser/ok/0031_extern.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0031_extern.rast
@@ -1,973 +1,973 @@
1SOURCE_FILE@[0; 1598) 1SOURCE_FILE@0..1598
2 EXTERN_BLOCK@[0; 1597) 2 EXTERN_BLOCK@0..1597
3 ABI@[0; 6) 3 ABI@0..6
4 EXTERN_KW@[0; 6) "extern" 4 EXTERN_KW@0..6 "extern"
5 WHITESPACE@[6; 7) " " 5 WHITESPACE@6..7 " "
6 EXTERN_ITEM_LIST@[7; 1597) 6 EXTERN_ITEM_LIST@7..1597
7 L_CURLY@[7; 8) "{" 7 L_CURLY@7..8 "{"
8 WHITESPACE@[8; 13) "\n " 8 WHITESPACE@8..13 "\n "
9 FN_DEF@[13; 87) 9 FN_DEF@13..87
10 VISIBILITY@[13; 16) 10 VISIBILITY@13..16
11 PUB_KW@[13; 16) "pub" 11 PUB_KW@13..16 "pub"
12 WHITESPACE@[16; 17) " " 12 WHITESPACE@16..17 " "
13 FN_KW@[17; 19) "fn" 13 FN_KW@17..19 "fn"
14 WHITESPACE@[19; 20) " " 14 WHITESPACE@19..20 " "
15 NAME@[20; 26) 15 NAME@20..26
16 IDENT@[20; 26) "socket" 16 IDENT@20..26 "socket"
17 PARAM_LIST@[26; 75) 17 PARAM_LIST@26..75
18 L_PAREN@[26; 27) "(" 18 L_PAREN@26..27 "("
19 PARAM@[27; 42) 19 PARAM@27..42
20 BIND_PAT@[27; 33) 20 BIND_PAT@27..33
21 NAME@[27; 33) 21 NAME@27..33
22 IDENT@[27; 33) "domain" 22 IDENT@27..33 "domain"
23 COLON@[33; 34) ":" 23 COLON@33..34 ":"
24 WHITESPACE@[34; 35) " " 24 WHITESPACE@34..35 " "
25 PATH_TYPE@[35; 42) 25 PATH_TYPE@35..42
26 PATH@[35; 42) 26 PATH@35..42
27 PATH_SEGMENT@[35; 42) 27 PATH_SEGMENT@35..42
28 COLON2@[35; 37) "::" 28 COLON2@35..37 "::"
29 NAME_REF@[37; 42) 29 NAME_REF@37..42
30 IDENT@[37; 42) "c_int" 30 IDENT@37..42 "c_int"
31 COMMA@[42; 43) "," 31 COMMA@42..43 ","
32 WHITESPACE@[43; 44) " " 32 WHITESPACE@43..44 " "
33 PARAM@[44; 55) 33 PARAM@44..55
34 BIND_PAT@[44; 46) 34 BIND_PAT@44..46
35 NAME@[44; 46) 35 NAME@44..46
36 IDENT@[44; 46) "ty" 36 IDENT@44..46 "ty"
37 COLON@[46; 47) ":" 37 COLON@46..47 ":"
38 WHITESPACE@[47; 48) " " 38 WHITESPACE@47..48 " "
39 PATH_TYPE@[48; 55) 39 PATH_TYPE@48..55
40 PATH@[48; 55) 40 PATH@48..55
41 PATH_SEGMENT@[48; 55) 41 PATH_SEGMENT@48..55
42 COLON2@[48; 50) "::" 42 COLON2@48..50 "::"
43 NAME_REF@[50; 55) 43 NAME_REF@50..55
44 IDENT@[50; 55) "c_int" 44 IDENT@50..55 "c_int"
45 COMMA@[55; 56) "," 45 COMMA@55..56 ","
46 WHITESPACE@[56; 57) " " 46 WHITESPACE@56..57 " "
47 PARAM@[57; 74) 47 PARAM@57..74
48 BIND_PAT@[57; 65) 48 BIND_PAT@57..65
49 NAME@[57; 65) 49 NAME@57..65
50 IDENT@[57; 65) "protocol" 50 IDENT@57..65 "protocol"
51 COLON@[65; 66) ":" 51 COLON@65..66 ":"
52 WHITESPACE@[66; 67) " " 52 WHITESPACE@66..67 " "
53 PATH_TYPE@[67; 74) 53 PATH_TYPE@67..74
54 PATH@[67; 74) 54 PATH@67..74
55 PATH_SEGMENT@[67; 74) 55 PATH_SEGMENT@67..74
56 COLON2@[67; 69) "::" 56 COLON2@67..69 "::"
57 NAME_REF@[69; 74) 57 NAME_REF@69..74
58 IDENT@[69; 74) "c_int" 58 IDENT@69..74 "c_int"
59 R_PAREN@[74; 75) ")" 59 R_PAREN@74..75 ")"
60 WHITESPACE@[75; 76) " " 60 WHITESPACE@75..76 " "
61 RET_TYPE@[76; 86) 61 RET_TYPE@76..86
62 THIN_ARROW@[76; 78) "->" 62 THIN_ARROW@76..78 "->"
63 WHITESPACE@[78; 79) " " 63 WHITESPACE@78..79 " "
64 PATH_TYPE@[79; 86) 64 PATH_TYPE@79..86
65 PATH@[79; 86) 65 PATH@79..86
66 PATH_SEGMENT@[79; 86) 66 PATH_SEGMENT@79..86
67 COLON2@[79; 81) "::" 67 COLON2@79..81 "::"
68 NAME_REF@[81; 86) 68 NAME_REF@81..86
69 IDENT@[81; 86) "c_int" 69 IDENT@81..86 "c_int"
70 SEMICOLON@[86; 87) ";" 70 SEMICOLON@86..87 ";"
71 WHITESPACE@[87; 92) "\n " 71 WHITESPACE@87..92 "\n "
72 FN_DEF@[92; 167) 72 FN_DEF@92..167
73 VISIBILITY@[92; 95) 73 VISIBILITY@92..95
74 PUB_KW@[92; 95) "pub" 74 PUB_KW@92..95 "pub"
75 WHITESPACE@[95; 96) " " 75 WHITESPACE@95..96 " "
76 FN_KW@[96; 98) "fn" 76 FN_KW@96..98 "fn"
77 WHITESPACE@[98; 99) " " 77 WHITESPACE@98..99 " "
78 NAME@[99; 103) 78 NAME@99..103
79 IDENT@[99; 103) "bind" 79 IDENT@99..103 "bind"
80 PARAM_LIST@[103; 155) 80 PARAM_LIST@103..155
81 L_PAREN@[103; 104) "(" 81 L_PAREN@103..104 "("
82 PARAM@[104; 115) 82 PARAM@104..115
83 BIND_PAT@[104; 106) 83 BIND_PAT@104..106
84 NAME@[104; 106) 84 NAME@104..106
85 IDENT@[104; 106) "fd" 85 IDENT@104..106 "fd"
86 COLON@[106; 107) ":" 86 COLON@106..107 ":"
87 WHITESPACE@[107; 108) " " 87 WHITESPACE@107..108 " "
88 PATH_TYPE@[108; 115) 88 PATH_TYPE@108..115
89 PATH@[108; 115) 89 PATH@108..115
90 PATH_SEGMENT@[108; 115) 90 PATH_SEGMENT@108..115
91 COLON2@[108; 110) "::" 91 COLON2@108..110 "::"
92 NAME_REF@[110; 115) 92 NAME_REF@110..115
93 IDENT@[110; 115) "c_int" 93 IDENT@110..115 "c_int"
94 COMMA@[115; 116) "," 94 COMMA@115..116 ","
95 WHITESPACE@[116; 117) " " 95 WHITESPACE@116..117 " "
96 PARAM@[117; 138) 96 PARAM@117..138
97 BIND_PAT@[117; 121) 97 BIND_PAT@117..121
98 NAME@[117; 121) 98 NAME@117..121
99 IDENT@[117; 121) "addr" 99 IDENT@117..121 "addr"
100 COLON@[121; 122) ":" 100 COLON@121..122 ":"
101 WHITESPACE@[122; 123) " " 101 WHITESPACE@122..123 " "
102 POINTER_TYPE@[123; 138) 102 POINTER_TYPE@123..138
103 STAR@[123; 124) "*" 103 STAR@123..124 "*"
104 CONST_KW@[124; 129) "const" 104 CONST_KW@124..129 "const"
105 WHITESPACE@[129; 130) " " 105 WHITESPACE@129..130 " "
106 PATH_TYPE@[130; 138) 106 PATH_TYPE@130..138
107 PATH@[130; 138) 107 PATH@130..138
108 PATH_SEGMENT@[130; 138) 108 PATH_SEGMENT@130..138
109 NAME_REF@[130; 138) 109 NAME_REF@130..138
110 IDENT@[130; 138) "sockaddr" 110 IDENT@130..138 "sockaddr"
111 COMMA@[138; 139) "," 111 COMMA@138..139 ","
112 WHITESPACE@[139; 140) " " 112 WHITESPACE@139..140 " "
113 PARAM@[140; 154) 113 PARAM@140..154
114 BIND_PAT@[140; 143) 114 BIND_PAT@140..143
115 NAME@[140; 143) 115 NAME@140..143
116 IDENT@[140; 143) "len" 116 IDENT@140..143 "len"
117 COLON@[143; 144) ":" 117 COLON@143..144 ":"
118 WHITESPACE@[144; 145) " " 118 WHITESPACE@144..145 " "
119 PATH_TYPE@[145; 154) 119 PATH_TYPE@145..154
120 PATH@[145; 154) 120 PATH@145..154
121 PATH_SEGMENT@[145; 154) 121 PATH_SEGMENT@145..154
122 NAME_REF@[145; 154) 122 NAME_REF@145..154
123 IDENT@[145; 154) "socklen_t" 123 IDENT@145..154 "socklen_t"
124 R_PAREN@[154; 155) ")" 124 R_PAREN@154..155 ")"
125 WHITESPACE@[155; 156) " " 125 WHITESPACE@155..156 " "
126 RET_TYPE@[156; 166) 126 RET_TYPE@156..166
127 THIN_ARROW@[156; 158) "->" 127 THIN_ARROW@156..158 "->"
128 WHITESPACE@[158; 159) " " 128 WHITESPACE@158..159 " "
129 PATH_TYPE@[159; 166) 129 PATH_TYPE@159..166
130 PATH@[159; 166) 130 PATH@159..166
131 PATH_SEGMENT@[159; 166) 131 PATH_SEGMENT@159..166
132 COLON2@[159; 161) "::" 132 COLON2@159..161 "::"
133 NAME_REF@[161; 166) 133 NAME_REF@161..166
134 IDENT@[161; 166) "c_int" 134 IDENT@161..166 "c_int"
135 SEMICOLON@[166; 167) ";" 135 SEMICOLON@166..167 ";"
136 WHITESPACE@[167; 172) "\n " 136 WHITESPACE@167..172 "\n "
137 FN_DEF@[172; 276) 137 FN_DEF@172..276
138 VISIBILITY@[172; 175) 138 VISIBILITY@172..175
139 PUB_KW@[172; 175) "pub" 139 PUB_KW@172..175 "pub"
140 WHITESPACE@[175; 176) " " 140 WHITESPACE@175..176 " "
141 FN_KW@[176; 178) "fn" 141 FN_KW@176..178 "fn"
142 WHITESPACE@[178; 179) " " 142 WHITESPACE@178..179 " "
143 NAME@[179; 186) 143 NAME@179..186
144 IDENT@[179; 186) "connect" 144 IDENT@179..186 "connect"
145 PARAM_LIST@[186; 264) 145 PARAM_LIST@186..264
146 L_PAREN@[186; 187) "(" 146 L_PAREN@186..187 "("
147 PARAM@[187; 202) 147 PARAM@187..202
148 BIND_PAT@[187; 193) 148 BIND_PAT@187..193
149 NAME@[187; 193) 149 NAME@187..193
150 IDENT@[187; 193) "socket" 150 IDENT@187..193 "socket"
151 COLON@[193; 194) ":" 151 COLON@193..194 ":"
152 WHITESPACE@[194; 195) " " 152 WHITESPACE@194..195 " "
153 PATH_TYPE@[195; 202) 153 PATH_TYPE@195..202
154 PATH@[195; 202) 154 PATH@195..202
155 PATH_SEGMENT@[195; 202) 155 PATH_SEGMENT@195..202
156 COLON2@[195; 197) "::" 156 COLON2@195..197 "::"
157 NAME_REF@[197; 202) 157 NAME_REF@197..202
158 IDENT@[197; 202) "c_int" 158 IDENT@197..202 "c_int"
159 COMMA@[202; 203) "," 159 COMMA@202..203 ","
160 WHITESPACE@[203; 204) " " 160 WHITESPACE@203..204 " "
161 PARAM@[204; 228) 161 PARAM@204..228
162 BIND_PAT@[204; 211) 162 BIND_PAT@204..211
163 NAME@[204; 211) 163 NAME@204..211
164 IDENT@[204; 211) "address" 164 IDENT@204..211 "address"
165 COLON@[211; 212) ":" 165 COLON@211..212 ":"
166 WHITESPACE@[212; 213) " " 166 WHITESPACE@212..213 " "
167 POINTER_TYPE@[213; 228) 167 POINTER_TYPE@213..228
168 STAR@[213; 214) "*" 168 STAR@213..214 "*"
169 CONST_KW@[214; 219) "const" 169 CONST_KW@214..219 "const"
170 WHITESPACE@[219; 220) " " 170 WHITESPACE@219..220 " "
171 PATH_TYPE@[220; 228) 171 PATH_TYPE@220..228
172 PATH@[220; 228) 172 PATH@220..228
173 PATH_SEGMENT@[220; 228) 173 PATH_SEGMENT@220..228
174 NAME_REF@[220; 228) 174 NAME_REF@220..228
175 IDENT@[220; 228) "sockaddr" 175 IDENT@220..228 "sockaddr"
176 COMMA@[228; 229) "," 176 COMMA@228..229 ","
177 WHITESPACE@[229; 249) "\n " 177 WHITESPACE@229..249 "\n "
178 PARAM@[249; 263) 178 PARAM@249..263
179 BIND_PAT@[249; 252) 179 BIND_PAT@249..252
180 NAME@[249; 252) 180 NAME@249..252
181 IDENT@[249; 252) "len" 181 IDENT@249..252 "len"
182 COLON@[252; 253) ":" 182 COLON@252..253 ":"
183 WHITESPACE@[253; 254) " " 183 WHITESPACE@253..254 " "
184 PATH_TYPE@[254; 263) 184 PATH_TYPE@254..263
185 PATH@[254; 263) 185 PATH@254..263
186 PATH_SEGMENT@[254; 263) 186 PATH_SEGMENT@254..263
187 NAME_REF@[254; 263) 187 NAME_REF@254..263
188 IDENT@[254; 263) "socklen_t" 188 IDENT@254..263 "socklen_t"
189 R_PAREN@[263; 264) ")" 189 R_PAREN@263..264 ")"
190 WHITESPACE@[264; 265) " " 190 WHITESPACE@264..265 " "
191 RET_TYPE@[265; 275) 191 RET_TYPE@265..275
192 THIN_ARROW@[265; 267) "->" 192 THIN_ARROW@265..267 "->"
193 WHITESPACE@[267; 268) " " 193 WHITESPACE@267..268 " "
194 PATH_TYPE@[268; 275) 194 PATH_TYPE@268..275
195 PATH@[268; 275) 195 PATH@268..275
196 PATH_SEGMENT@[268; 275) 196 PATH_SEGMENT@268..275
197 COLON2@[268; 270) "::" 197 COLON2@268..270 "::"
198 NAME_REF@[270; 275) 198 NAME_REF@270..275
199 IDENT@[270; 275) "c_int" 199 IDENT@270..275 "c_int"
200 SEMICOLON@[275; 276) ";" 200 SEMICOLON@275..276 ";"
201 WHITESPACE@[276; 281) "\n " 201 WHITESPACE@276..281 "\n "
202 FN_DEF@[281; 341) 202 FN_DEF@281..341
203 VISIBILITY@[281; 284) 203 VISIBILITY@281..284
204 PUB_KW@[281; 284) "pub" 204 PUB_KW@281..284 "pub"
205 WHITESPACE@[284; 285) " " 205 WHITESPACE@284..285 " "
206 FN_KW@[285; 287) "fn" 206 FN_KW@285..287 "fn"
207 WHITESPACE@[287; 288) " " 207 WHITESPACE@287..288 " "
208 NAME@[288; 294) 208 NAME@288..294
209 IDENT@[288; 294) "listen" 209 IDENT@288..294 "listen"
210 PARAM_LIST@[294; 329) 210 PARAM_LIST@294..329
211 L_PAREN@[294; 295) "(" 211 L_PAREN@294..295 "("
212 PARAM@[295; 310) 212 PARAM@295..310
213 BIND_PAT@[295; 301) 213 BIND_PAT@295..301
214 NAME@[295; 301) 214 NAME@295..301
215 IDENT@[295; 301) "socket" 215 IDENT@295..301 "socket"
216 COLON@[301; 302) ":" 216 COLON@301..302 ":"
217 WHITESPACE@[302; 303) " " 217 WHITESPACE@302..303 " "
218 PATH_TYPE@[303; 310) 218 PATH_TYPE@303..310
219 PATH@[303; 310) 219 PATH@303..310
220 PATH_SEGMENT@[303; 310) 220 PATH_SEGMENT@303..310
221 COLON2@[303; 305) "::" 221 COLON2@303..305 "::"
222 NAME_REF@[305; 310) 222 NAME_REF@305..310
223 IDENT@[305; 310) "c_int" 223 IDENT@305..310 "c_int"
224 COMMA@[310; 311) "," 224 COMMA@310..311 ","
225 WHITESPACE@[311; 312) " " 225 WHITESPACE@311..312 " "
226 PARAM@[312; 328) 226 PARAM@312..328
227 BIND_PAT@[312; 319) 227 BIND_PAT@312..319
228 NAME@[312; 319) 228 NAME@312..319
229 IDENT@[312; 319) "backlog" 229 IDENT@312..319 "backlog"
230 COLON@[319; 320) ":" 230 COLON@319..320 ":"
231 WHITESPACE@[320; 321) " " 231 WHITESPACE@320..321 " "
232 PATH_TYPE@[321; 328) 232 PATH_TYPE@321..328
233 PATH@[321; 328) 233 PATH@321..328
234 PATH_SEGMENT@[321; 328) 234 PATH_SEGMENT@321..328
235 COLON2@[321; 323) "::" 235 COLON2@321..323 "::"
236 NAME_REF@[323; 328) 236 NAME_REF@323..328
237 IDENT@[323; 328) "c_int" 237 IDENT@323..328 "c_int"
238 R_PAREN@[328; 329) ")" 238 R_PAREN@328..329 ")"
239 WHITESPACE@[329; 330) " " 239 WHITESPACE@329..330 " "
240 RET_TYPE@[330; 340) 240 RET_TYPE@330..340
241 THIN_ARROW@[330; 332) "->" 241 THIN_ARROW@330..332 "->"
242 WHITESPACE@[332; 333) " " 242 WHITESPACE@332..333 " "
243 PATH_TYPE@[333; 340) 243 PATH_TYPE@333..340
244 PATH@[333; 340) 244 PATH@333..340
245 PATH_SEGMENT@[333; 340) 245 PATH_SEGMENT@333..340
246 COLON2@[333; 335) "::" 246 COLON2@333..335 "::"
247 NAME_REF@[335; 340) 247 NAME_REF@335..340
248 IDENT@[335; 340) "c_int" 248 IDENT@335..340 "c_int"
249 SEMICOLON@[340; 341) ";" 249 SEMICOLON@340..341 ";"
250 WHITESPACE@[341; 346) "\n " 250 WHITESPACE@341..346 "\n "
251 FN_DEF@[346; 469) 251 FN_DEF@346..469
252 VISIBILITY@[346; 349) 252 VISIBILITY@346..349
253 PUB_KW@[346; 349) "pub" 253 PUB_KW@346..349 "pub"
254 WHITESPACE@[349; 350) " " 254 WHITESPACE@349..350 " "
255 FN_KW@[350; 352) "fn" 255 FN_KW@350..352 "fn"
256 WHITESPACE@[352; 353) " " 256 WHITESPACE@352..353 " "
257 NAME@[353; 364) 257 NAME@353..364
258 IDENT@[353; 364) "getsockname" 258 IDENT@353..364 "getsockname"
259 PARAM_LIST@[364; 457) 259 PARAM_LIST@364..457
260 L_PAREN@[364; 365) "(" 260 L_PAREN@364..365 "("
261 PARAM@[365; 380) 261 PARAM@365..380
262 BIND_PAT@[365; 371) 262 BIND_PAT@365..371
263 NAME@[365; 371) 263 NAME@365..371
264 IDENT@[365; 371) "socket" 264 IDENT@365..371 "socket"
265 COLON@[371; 372) ":" 265 COLON@371..372 ":"
266 WHITESPACE@[372; 373) " " 266 WHITESPACE@372..373 " "
267 PATH_TYPE@[373; 380) 267 PATH_TYPE@373..380
268 PATH@[373; 380) 268 PATH@373..380
269 PATH_SEGMENT@[373; 380) 269 PATH_SEGMENT@373..380
270 COLON2@[373; 375) "::" 270 COLON2@373..375 "::"
271 NAME_REF@[375; 380) 271 NAME_REF@375..380
272 IDENT@[375; 380) "c_int" 272 IDENT@375..380 "c_int"
273 COMMA@[380; 381) "," 273 COMMA@380..381 ","
274 WHITESPACE@[381; 382) " " 274 WHITESPACE@381..382 " "
275 PARAM@[382; 404) 275 PARAM@382..404
276 BIND_PAT@[382; 389) 276 BIND_PAT@382..389
277 NAME@[382; 389) 277 NAME@382..389
278 IDENT@[382; 389) "address" 278 IDENT@382..389 "address"
279 COLON@[389; 390) ":" 279 COLON@389..390 ":"
280 WHITESPACE@[390; 391) " " 280 WHITESPACE@390..391 " "
281 POINTER_TYPE@[391; 404) 281 POINTER_TYPE@391..404
282 STAR@[391; 392) "*" 282 STAR@391..392 "*"
283 MUT_KW@[392; 395) "mut" 283 MUT_KW@392..395 "mut"
284 WHITESPACE@[395; 396) " " 284 WHITESPACE@395..396 " "
285 PATH_TYPE@[396; 404) 285 PATH_TYPE@396..404
286 PATH@[396; 404) 286 PATH@396..404
287 PATH_SEGMENT@[396; 404) 287 PATH_SEGMENT@396..404
288 NAME_REF@[396; 404) 288 NAME_REF@396..404
289 IDENT@[396; 404) "sockaddr" 289 IDENT@396..404 "sockaddr"
290 COMMA@[404; 405) "," 290 COMMA@404..405 ","
291 WHITESPACE@[405; 429) "\n " 291 WHITESPACE@405..429 "\n "
292 PARAM@[429; 456) 292 PARAM@429..456
293 BIND_PAT@[429; 440) 293 BIND_PAT@429..440
294 NAME@[429; 440) 294 NAME@429..440
295 IDENT@[429; 440) "address_len" 295 IDENT@429..440 "address_len"
296 COLON@[440; 441) ":" 296 COLON@440..441 ":"
297 WHITESPACE@[441; 442) " " 297 WHITESPACE@441..442 " "
298 POINTER_TYPE@[442; 456) 298 POINTER_TYPE@442..456
299 STAR@[442; 443) "*" 299 STAR@442..443 "*"
300 MUT_KW@[443; 446) "mut" 300 MUT_KW@443..446 "mut"
301 WHITESPACE@[446; 447) " " 301 WHITESPACE@446..447 " "
302 PATH_TYPE@[447; 456) 302 PATH_TYPE@447..456
303 PATH@[447; 456) 303 PATH@447..456
304 PATH_SEGMENT@[447; 456) 304 PATH_SEGMENT@447..456
305 NAME_REF@[447; 456) 305 NAME_REF@447..456
306 IDENT@[447; 456) "socklen_t" 306 IDENT@447..456 "socklen_t"
307 R_PAREN@[456; 457) ")" 307 R_PAREN@456..457 ")"
308 WHITESPACE@[457; 458) " " 308 WHITESPACE@457..458 " "
309 RET_TYPE@[458; 468) 309 RET_TYPE@458..468
310 THIN_ARROW@[458; 460) "->" 310 THIN_ARROW@458..460 "->"
311 WHITESPACE@[460; 461) " " 311 WHITESPACE@460..461 " "
312 PATH_TYPE@[461; 468) 312 PATH_TYPE@461..468
313 PATH@[461; 468) 313 PATH@461..468
314 PATH_SEGMENT@[461; 468) 314 PATH_SEGMENT@461..468
315 COLON2@[461; 463) "::" 315 COLON2@461..463 "::"
316 NAME_REF@[463; 468) 316 NAME_REF@463..468
317 IDENT@[463; 468) "c_int" 317 IDENT@463..468 "c_int"
318 SEMICOLON@[468; 469) ";" 318 SEMICOLON@468..469 ";"
319 WHITESPACE@[469; 474) "\n " 319 WHITESPACE@469..474 "\n "
320 FN_DEF@[474; 691) 320 FN_DEF@474..691
321 VISIBILITY@[474; 477) 321 VISIBILITY@474..477
322 PUB_KW@[474; 477) "pub" 322 PUB_KW@474..477 "pub"
323 WHITESPACE@[477; 478) " " 323 WHITESPACE@477..478 " "
324 FN_KW@[478; 480) "fn" 324 FN_KW@478..480 "fn"
325 WHITESPACE@[480; 481) " " 325 WHITESPACE@480..481 " "
326 NAME@[481; 491) 326 NAME@481..491
327 IDENT@[481; 491) "getsockopt" 327 IDENT@481..491 "getsockopt"
328 PARAM_LIST@[491; 679) 328 PARAM_LIST@491..679
329 L_PAREN@[491; 492) "(" 329 L_PAREN@491..492 "("
330 PARAM@[492; 507) 330 PARAM@492..507
331 BIND_PAT@[492; 498) 331 BIND_PAT@492..498
332 NAME@[492; 498) 332 NAME@492..498
333 IDENT@[492; 498) "sockfd" 333 IDENT@492..498 "sockfd"
334 COLON@[498; 499) ":" 334 COLON@498..499 ":"
335 WHITESPACE@[499; 500) " " 335 WHITESPACE@499..500 " "
336 PATH_TYPE@[500; 507) 336 PATH_TYPE@500..507
337 PATH@[500; 507) 337 PATH@500..507
338 PATH_SEGMENT@[500; 507) 338 PATH_SEGMENT@500..507
339 COLON2@[500; 502) "::" 339 COLON2@500..502 "::"
340 NAME_REF@[502; 507) 340 NAME_REF@502..507
341 IDENT@[502; 507) "c_int" 341 IDENT@502..507 "c_int"
342 COMMA@[507; 508) "," 342 COMMA@507..508 ","
343 WHITESPACE@[508; 531) "\n " 343 WHITESPACE@508..531 "\n "
344 PARAM@[531; 545) 344 PARAM@531..545
345 BIND_PAT@[531; 536) 345 BIND_PAT@531..536
346 NAME@[531; 536) 346 NAME@531..536
347 IDENT@[531; 536) "level" 347 IDENT@531..536 "level"
348 COLON@[536; 537) ":" 348 COLON@536..537 ":"
349 WHITESPACE@[537; 538) " " 349 WHITESPACE@537..538 " "
350 PATH_TYPE@[538; 545) 350 PATH_TYPE@538..545
351 PATH@[538; 545) 351 PATH@538..545
352 PATH_SEGMENT@[538; 545) 352 PATH_SEGMENT@538..545
353 COLON2@[538; 540) "::" 353 COLON2@538..540 "::"
354 NAME_REF@[540; 545) 354 NAME_REF@540..545
355 IDENT@[540; 545) "c_int" 355 IDENT@540..545 "c_int"
356 COMMA@[545; 546) "," 356 COMMA@545..546 ","
357 WHITESPACE@[546; 569) "\n " 357 WHITESPACE@546..569 "\n "
358 PARAM@[569; 585) 358 PARAM@569..585
359 BIND_PAT@[569; 576) 359 BIND_PAT@569..576
360 NAME@[569; 576) 360 NAME@569..576
361 IDENT@[569; 576) "optname" 361 IDENT@569..576 "optname"
362 COLON@[576; 577) ":" 362 COLON@576..577 ":"
363 WHITESPACE@[577; 578) " " 363 WHITESPACE@577..578 " "
364 PATH_TYPE@[578; 585) 364 PATH_TYPE@578..585
365 PATH@[578; 585) 365 PATH@578..585
366 PATH_SEGMENT@[578; 585) 366 PATH_SEGMENT@578..585
367 COLON2@[578; 580) "::" 367 COLON2@578..580 "::"
368 NAME_REF@[580; 585) 368 NAME_REF@580..585
369 IDENT@[580; 585) "c_int" 369 IDENT@580..585 "c_int"
370 COMMA@[585; 586) "," 370 COMMA@585..586 ","
371 WHITESPACE@[586; 609) "\n " 371 WHITESPACE@586..609 "\n "
372 PARAM@[609; 630) 372 PARAM@609..630
373 BIND_PAT@[609; 615) 373 BIND_PAT@609..615
374 NAME@[609; 615) 374 NAME@609..615
375 IDENT@[609; 615) "optval" 375 IDENT@609..615 "optval"
376 COLON@[615; 616) ":" 376 COLON@615..616 ":"
377 WHITESPACE@[616; 617) " " 377 WHITESPACE@616..617 " "
378 POINTER_TYPE@[617; 630) 378 POINTER_TYPE@617..630
379 STAR@[617; 618) "*" 379 STAR@617..618 "*"
380 MUT_KW@[618; 621) "mut" 380 MUT_KW@618..621 "mut"
381 WHITESPACE@[621; 622) " " 381 WHITESPACE@621..622 " "
382 PATH_TYPE@[622; 630) 382 PATH_TYPE@622..630
383 PATH@[622; 630) 383 PATH@622..630
384 PATH_SEGMENT@[622; 630) 384 PATH_SEGMENT@622..630
385 COLON2@[622; 624) "::" 385 COLON2@622..624 "::"
386 NAME_REF@[624; 630) 386 NAME_REF@624..630
387 IDENT@[624; 630) "c_void" 387 IDENT@624..630 "c_void"
388 COMMA@[630; 631) "," 388 COMMA@630..631 ","
389 WHITESPACE@[631; 654) "\n " 389 WHITESPACE@631..654 "\n "
390 PARAM@[654; 678) 390 PARAM@654..678
391 BIND_PAT@[654; 660) 391 BIND_PAT@654..660
392 NAME@[654; 660) 392 NAME@654..660
393 IDENT@[654; 660) "optlen" 393 IDENT@654..660 "optlen"
394 COLON@[660; 661) ":" 394 COLON@660..661 ":"
395 WHITESPACE@[661; 662) " " 395 WHITESPACE@661..662 " "
396 POINTER_TYPE@[662; 678) 396 POINTER_TYPE@662..678
397 STAR@[662; 663) "*" 397 STAR@662..663 "*"
398 MUT_KW@[663; 666) "mut" 398 MUT_KW@663..666 "mut"
399 WHITESPACE@[666; 667) " " 399 WHITESPACE@666..667 " "
400 PATH_TYPE@[667; 678) 400 PATH_TYPE@667..678
401 PATH@[667; 678) 401 PATH@667..678
402 PATH_SEGMENT@[667; 678) 402 PATH_SEGMENT@667..678
403 COLON2@[667; 669) "::" 403 COLON2@667..669 "::"
404 NAME_REF@[669; 678) 404 NAME_REF@669..678
405 IDENT@[669; 678) "socklen_t" 405 IDENT@669..678 "socklen_t"
406 R_PAREN@[678; 679) ")" 406 R_PAREN@678..679 ")"
407 WHITESPACE@[679; 680) " " 407 WHITESPACE@679..680 " "
408 RET_TYPE@[680; 690) 408 RET_TYPE@680..690
409 THIN_ARROW@[680; 682) "->" 409 THIN_ARROW@680..682 "->"
410 WHITESPACE@[682; 683) " " 410 WHITESPACE@682..683 " "
411 PATH_TYPE@[683; 690) 411 PATH_TYPE@683..690
412 PATH@[683; 690) 412 PATH@683..690
413 PATH_SEGMENT@[683; 690) 413 PATH_SEGMENT@683..690
414 COLON2@[683; 685) "::" 414 COLON2@683..685 "::"
415 NAME_REF@[685; 690) 415 NAME_REF@685..690
416 IDENT@[685; 690) "c_int" 416 IDENT@685..690 "c_int"
417 SEMICOLON@[690; 691) ";" 417 SEMICOLON@690..691 ";"
418 WHITESPACE@[691; 696) "\n " 418 WHITESPACE@691..696 "\n "
419 FN_DEF@[696; 864) 419 FN_DEF@696..864
420 VISIBILITY@[696; 699) 420 VISIBILITY@696..699
421 PUB_KW@[696; 699) "pub" 421 PUB_KW@696..699 "pub"
422 WHITESPACE@[699; 700) " " 422 WHITESPACE@699..700 " "
423 FN_KW@[700; 702) "fn" 423 FN_KW@700..702 "fn"
424 WHITESPACE@[702; 703) " " 424 WHITESPACE@702..703 " "
425 NAME@[703; 713) 425 NAME@703..713
426 IDENT@[703; 713) "setsockopt" 426 IDENT@703..713 "setsockopt"
427 PARAM_LIST@[713; 852) 427 PARAM_LIST@713..852
428 L_PAREN@[713; 714) "(" 428 L_PAREN@713..714 "("
429 PARAM@[714; 729) 429 PARAM@714..729
430 BIND_PAT@[714; 720) 430 BIND_PAT@714..720
431 NAME@[714; 720) 431 NAME@714..720
432 IDENT@[714; 720) "socket" 432 IDENT@714..720 "socket"
433 COLON@[720; 721) ":" 433 COLON@720..721 ":"
434 WHITESPACE@[721; 722) " " 434 WHITESPACE@721..722 " "
435 PATH_TYPE@[722; 729) 435 PATH_TYPE@722..729
436 PATH@[722; 729) 436 PATH@722..729
437 PATH_SEGMENT@[722; 729) 437 PATH_SEGMENT@722..729
438 COLON2@[722; 724) "::" 438 COLON2@722..724 "::"
439 NAME_REF@[724; 729) 439 NAME_REF@724..729
440 IDENT@[724; 729) "c_int" 440 IDENT@724..729 "c_int"
441 COMMA@[729; 730) "," 441 COMMA@729..730 ","
442 WHITESPACE@[730; 731) " " 442 WHITESPACE@730..731 " "
443 PARAM@[731; 745) 443 PARAM@731..745
444 BIND_PAT@[731; 736) 444 BIND_PAT@731..736
445 NAME@[731; 736) 445 NAME@731..736
446 IDENT@[731; 736) "level" 446 IDENT@731..736 "level"
447 COLON@[736; 737) ":" 447 COLON@736..737 ":"
448 WHITESPACE@[737; 738) " " 448 WHITESPACE@737..738 " "
449 PATH_TYPE@[738; 745) 449 PATH_TYPE@738..745
450 PATH@[738; 745) 450 PATH@738..745
451 PATH_SEGMENT@[738; 745) 451 PATH_SEGMENT@738..745
452 COLON2@[738; 740) "::" 452 COLON2@738..740 "::"
453 NAME_REF@[740; 745) 453 NAME_REF@740..745
454 IDENT@[740; 745) "c_int" 454 IDENT@740..745 "c_int"
455 COMMA@[745; 746) "," 455 COMMA@745..746 ","
456 WHITESPACE@[746; 747) " " 456 WHITESPACE@746..747 " "
457 PARAM@[747; 760) 457 PARAM@747..760
458 BIND_PAT@[747; 751) 458 BIND_PAT@747..751
459 NAME@[747; 751) 459 NAME@747..751
460 IDENT@[747; 751) "name" 460 IDENT@747..751 "name"
461 COLON@[751; 752) ":" 461 COLON@751..752 ":"
462 WHITESPACE@[752; 753) " " 462 WHITESPACE@752..753 " "
463 PATH_TYPE@[753; 760) 463 PATH_TYPE@753..760
464 PATH@[753; 760) 464 PATH@753..760
465 PATH_SEGMENT@[753; 760) 465 PATH_SEGMENT@753..760
466 COLON2@[753; 755) "::" 466 COLON2@753..755 "::"
467 NAME_REF@[755; 760) 467 NAME_REF@755..760
468 IDENT@[755; 760) "c_int" 468 IDENT@755..760 "c_int"
469 COMMA@[760; 761) "," 469 COMMA@760..761 ","
470 WHITESPACE@[761; 784) "\n " 470 WHITESPACE@761..784 "\n "
471 PARAM@[784; 806) 471 PARAM@784..806
472 BIND_PAT@[784; 789) 472 BIND_PAT@784..789
473 NAME@[784; 789) 473 NAME@784..789
474 IDENT@[784; 789) "value" 474 IDENT@784..789 "value"
475 COLON@[789; 790) ":" 475 COLON@789..790 ":"
476 WHITESPACE@[790; 791) " " 476 WHITESPACE@790..791 " "
477 POINTER_TYPE@[791; 806) 477 POINTER_TYPE@791..806
478 STAR@[791; 792) "*" 478 STAR@791..792 "*"
479 CONST_KW@[792; 797) "const" 479 CONST_KW@792..797 "const"
480 WHITESPACE@[797; 798) " " 480 WHITESPACE@797..798 " "
481 PATH_TYPE@[798; 806) 481 PATH_TYPE@798..806
482 PATH@[798; 806) 482 PATH@798..806
483 PATH_SEGMENT@[798; 806) 483 PATH_SEGMENT@798..806
484 COLON2@[798; 800) "::" 484 COLON2@798..800 "::"
485 NAME_REF@[800; 806) 485 NAME_REF@800..806
486 IDENT@[800; 806) "c_void" 486 IDENT@800..806 "c_void"
487 COMMA@[806; 807) "," 487 COMMA@806..807 ","
488 WHITESPACE@[807; 830) "\n " 488 WHITESPACE@807..830 "\n "
489 PARAM@[830; 851) 489 PARAM@830..851
490 BIND_PAT@[830; 840) 490 BIND_PAT@830..840
491 NAME@[830; 840) 491 NAME@830..840
492 IDENT@[830; 840) "option_len" 492 IDENT@830..840 "option_len"
493 COLON@[840; 841) ":" 493 COLON@840..841 ":"
494 WHITESPACE@[841; 842) " " 494 WHITESPACE@841..842 " "
495 PATH_TYPE@[842; 851) 495 PATH_TYPE@842..851
496 PATH@[842; 851) 496 PATH@842..851
497 PATH_SEGMENT@[842; 851) 497 PATH_SEGMENT@842..851
498 NAME_REF@[842; 851) 498 NAME_REF@842..851
499 IDENT@[842; 851) "socklen_t" 499 IDENT@842..851 "socklen_t"
500 R_PAREN@[851; 852) ")" 500 R_PAREN@851..852 ")"
501 WHITESPACE@[852; 853) " " 501 WHITESPACE@852..853 " "
502 RET_TYPE@[853; 863) 502 RET_TYPE@853..863
503 THIN_ARROW@[853; 855) "->" 503 THIN_ARROW@853..855 "->"
504 WHITESPACE@[855; 856) " " 504 WHITESPACE@855..856 " "
505 PATH_TYPE@[856; 863) 505 PATH_TYPE@856..863
506 PATH@[856; 863) 506 PATH@856..863
507 PATH_SEGMENT@[856; 863) 507 PATH_SEGMENT@856..863
508 COLON2@[856; 858) "::" 508 COLON2@856..858 "::"
509 NAME_REF@[858; 863) 509 NAME_REF@858..863
510 IDENT@[858; 863) "c_int" 510 IDENT@858..863 "c_int"
511 SEMICOLON@[863; 864) ";" 511 SEMICOLON@863..864 ";"
512 WHITESPACE@[864; 869) "\n " 512 WHITESPACE@864..869 "\n "
513 FN_DEF@[869; 992) 513 FN_DEF@869..992
514 VISIBILITY@[869; 872) 514 VISIBILITY@869..872
515 PUB_KW@[869; 872) "pub" 515 PUB_KW@869..872 "pub"
516 WHITESPACE@[872; 873) " " 516 WHITESPACE@872..873 " "
517 FN_KW@[873; 875) "fn" 517 FN_KW@873..875 "fn"
518 WHITESPACE@[875; 876) " " 518 WHITESPACE@875..876 " "
519 NAME@[876; 887) 519 NAME@876..887
520 IDENT@[876; 887) "getpeername" 520 IDENT@876..887 "getpeername"
521 PARAM_LIST@[887; 980) 521 PARAM_LIST@887..980
522 L_PAREN@[887; 888) "(" 522 L_PAREN@887..888 "("
523 PARAM@[888; 903) 523 PARAM@888..903
524 BIND_PAT@[888; 894) 524 BIND_PAT@888..894
525 NAME@[888; 894) 525 NAME@888..894
526 IDENT@[888; 894) "socket" 526 IDENT@888..894 "socket"
527 COLON@[894; 895) ":" 527 COLON@894..895 ":"
528 WHITESPACE@[895; 896) " " 528 WHITESPACE@895..896 " "
529 PATH_TYPE@[896; 903) 529 PATH_TYPE@896..903
530 PATH@[896; 903) 530 PATH@896..903
531 PATH_SEGMENT@[896; 903) 531 PATH_SEGMENT@896..903
532 COLON2@[896; 898) "::" 532 COLON2@896..898 "::"
533 NAME_REF@[898; 903) 533 NAME_REF@898..903
534 IDENT@[898; 903) "c_int" 534 IDENT@898..903 "c_int"
535 COMMA@[903; 904) "," 535 COMMA@903..904 ","
536 WHITESPACE@[904; 905) " " 536 WHITESPACE@904..905 " "
537 PARAM@[905; 927) 537 PARAM@905..927
538 BIND_PAT@[905; 912) 538 BIND_PAT@905..912
539 NAME@[905; 912) 539 NAME@905..912
540 IDENT@[905; 912) "address" 540 IDENT@905..912 "address"
541 COLON@[912; 913) ":" 541 COLON@912..913 ":"
542 WHITESPACE@[913; 914) " " 542 WHITESPACE@913..914 " "
543 POINTER_TYPE@[914; 927) 543 POINTER_TYPE@914..927
544 STAR@[914; 915) "*" 544 STAR@914..915 "*"
545 MUT_KW@[915; 918) "mut" 545 MUT_KW@915..918 "mut"
546 WHITESPACE@[918; 919) " " 546 WHITESPACE@918..919 " "
547 PATH_TYPE@[919; 927) 547 PATH_TYPE@919..927
548 PATH@[919; 927) 548 PATH@919..927
549 PATH_SEGMENT@[919; 927) 549 PATH_SEGMENT@919..927
550 NAME_REF@[919; 927) 550 NAME_REF@919..927
551 IDENT@[919; 927) "sockaddr" 551 IDENT@919..927 "sockaddr"
552 COMMA@[927; 928) "," 552 COMMA@927..928 ","
553 WHITESPACE@[928; 952) "\n " 553 WHITESPACE@928..952 "\n "
554 PARAM@[952; 979) 554 PARAM@952..979
555 BIND_PAT@[952; 963) 555 BIND_PAT@952..963
556 NAME@[952; 963) 556 NAME@952..963
557 IDENT@[952; 963) "address_len" 557 IDENT@952..963 "address_len"
558 COLON@[963; 964) ":" 558 COLON@963..964 ":"
559 WHITESPACE@[964; 965) " " 559 WHITESPACE@964..965 " "
560 POINTER_TYPE@[965; 979) 560 POINTER_TYPE@965..979
561 STAR@[965; 966) "*" 561 STAR@965..966 "*"
562 MUT_KW@[966; 969) "mut" 562 MUT_KW@966..969 "mut"
563 WHITESPACE@[969; 970) " " 563 WHITESPACE@969..970 " "
564 PATH_TYPE@[970; 979) 564 PATH_TYPE@970..979
565 PATH@[970; 979) 565 PATH@970..979
566 PATH_SEGMENT@[970; 979) 566 PATH_SEGMENT@970..979
567 NAME_REF@[970; 979) 567 NAME_REF@970..979
568 IDENT@[970; 979) "socklen_t" 568 IDENT@970..979 "socklen_t"
569 R_PAREN@[979; 980) ")" 569 R_PAREN@979..980 ")"
570 WHITESPACE@[980; 981) " " 570 WHITESPACE@980..981 " "
571 RET_TYPE@[981; 991) 571 RET_TYPE@981..991
572 THIN_ARROW@[981; 983) "->" 572 THIN_ARROW@981..983 "->"
573 WHITESPACE@[983; 984) " " 573 WHITESPACE@983..984 " "
574 PATH_TYPE@[984; 991) 574 PATH_TYPE@984..991
575 PATH@[984; 991) 575 PATH@984..991
576 PATH_SEGMENT@[984; 991) 576 PATH_SEGMENT@984..991
577 COLON2@[984; 986) "::" 577 COLON2@984..986 "::"
578 NAME_REF@[986; 991) 578 NAME_REF@986..991
579 IDENT@[986; 991) "c_int" 579 IDENT@986..991 "c_int"
580 SEMICOLON@[991; 992) ";" 580 SEMICOLON@991..992 ";"
581 WHITESPACE@[992; 997) "\n " 581 WHITESPACE@992..997 "\n "
582 FN_DEF@[997; 1173) 582 FN_DEF@997..1173
583 VISIBILITY@[997; 1000) 583 VISIBILITY@997..1000
584 PUB_KW@[997; 1000) "pub" 584 PUB_KW@997..1000 "pub"
585 WHITESPACE@[1000; 1001) " " 585 WHITESPACE@1000..1001 " "
586 FN_KW@[1001; 1003) "fn" 586 FN_KW@1001..1003 "fn"
587 WHITESPACE@[1003; 1004) " " 587 WHITESPACE@1003..1004 " "
588 NAME@[1004; 1010) 588 NAME@1004..1010
589 IDENT@[1004; 1010) "sendto" 589 IDENT@1004..1010 "sendto"
590 PARAM_LIST@[1010; 1159) 590 PARAM_LIST@1010..1159
591 L_PAREN@[1010; 1011) "(" 591 L_PAREN@1010..1011 "("
592 PARAM@[1011; 1026) 592 PARAM@1011..1026
593 BIND_PAT@[1011; 1017) 593 BIND_PAT@1011..1017
594 NAME@[1011; 1017) 594 NAME@1011..1017
595 IDENT@[1011; 1017) "socket" 595 IDENT@1011..1017 "socket"
596 COLON@[1017; 1018) ":" 596 COLON@1017..1018 ":"
597 WHITESPACE@[1018; 1019) " " 597 WHITESPACE@1018..1019 " "
598 PATH_TYPE@[1019; 1026) 598 PATH_TYPE@1019..1026
599 PATH@[1019; 1026) 599 PATH@1019..1026
600 PATH_SEGMENT@[1019; 1026) 600 PATH_SEGMENT@1019..1026
601 COLON2@[1019; 1021) "::" 601 COLON2@1019..1021 "::"
602 NAME_REF@[1021; 1026) 602 NAME_REF@1021..1026
603 IDENT@[1021; 1026) "c_int" 603 IDENT@1021..1026 "c_int"
604 COMMA@[1026; 1027) "," 604 COMMA@1026..1027 ","
605 WHITESPACE@[1027; 1028) " " 605 WHITESPACE@1027..1028 " "
606 PARAM@[1028; 1048) 606 PARAM@1028..1048
607 BIND_PAT@[1028; 1031) 607 BIND_PAT@1028..1031
608 NAME@[1028; 1031) 608 NAME@1028..1031
609 IDENT@[1028; 1031) "buf" 609 IDENT@1028..1031 "buf"
610 COLON@[1031; 1032) ":" 610 COLON@1031..1032 ":"
611 WHITESPACE@[1032; 1033) " " 611 WHITESPACE@1032..1033 " "
612 POINTER_TYPE@[1033; 1048) 612 POINTER_TYPE@1033..1048
613 STAR@[1033; 1034) "*" 613 STAR@1033..1034 "*"
614 CONST_KW@[1034; 1039) "const" 614 CONST_KW@1034..1039 "const"
615 WHITESPACE@[1039; 1040) " " 615 WHITESPACE@1039..1040 " "
616 PATH_TYPE@[1040; 1048) 616 PATH_TYPE@1040..1048
617 PATH@[1040; 1048) 617 PATH@1040..1048
618 PATH_SEGMENT@[1040; 1048) 618 PATH_SEGMENT@1040..1048
619 COLON2@[1040; 1042) "::" 619 COLON2@1040..1042 "::"
620 NAME_REF@[1042; 1048) 620 NAME_REF@1042..1048
621 IDENT@[1042; 1048) "c_void" 621 IDENT@1042..1048 "c_void"
622 COMMA@[1048; 1049) "," 622 COMMA@1048..1049 ","
623 WHITESPACE@[1049; 1050) " " 623 WHITESPACE@1049..1050 " "
624 PARAM@[1050; 1063) 624 PARAM@1050..1063
625 BIND_PAT@[1050; 1053) 625 BIND_PAT@1050..1053
626 NAME@[1050; 1053) 626 NAME@1050..1053
627 IDENT@[1050; 1053) "len" 627 IDENT@1050..1053 "len"
628 COLON@[1053; 1054) ":" 628 COLON@1053..1054 ":"
629 WHITESPACE@[1054; 1055) " " 629 WHITESPACE@1054..1055 " "
630 PATH_TYPE@[1055; 1063) 630 PATH_TYPE@1055..1063
631 PATH@[1055; 1063) 631 PATH@1055..1063
632 PATH_SEGMENT@[1055; 1063) 632 PATH_SEGMENT@1055..1063
633 COLON2@[1055; 1057) "::" 633 COLON2@1055..1057 "::"
634 NAME_REF@[1057; 1063) 634 NAME_REF@1057..1063
635 IDENT@[1057; 1063) "size_t" 635 IDENT@1057..1063 "size_t"
636 COMMA@[1063; 1064) "," 636 COMMA@1063..1064 ","
637 WHITESPACE@[1064; 1083) "\n " 637 WHITESPACE@1064..1083 "\n "
638 PARAM@[1083; 1097) 638 PARAM@1083..1097
639 BIND_PAT@[1083; 1088) 639 BIND_PAT@1083..1088
640 NAME@[1083; 1088) 640 NAME@1083..1088
641 IDENT@[1083; 1088) "flags" 641 IDENT@1083..1088 "flags"
642 COLON@[1088; 1089) ":" 642 COLON@1088..1089 ":"
643 WHITESPACE@[1089; 1090) " " 643 WHITESPACE@1089..1090 " "
644 PATH_TYPE@[1090; 1097) 644 PATH_TYPE@1090..1097
645 PATH@[1090; 1097) 645 PATH@1090..1097
646 PATH_SEGMENT@[1090; 1097) 646 PATH_SEGMENT@1090..1097
647 COLON2@[1090; 1092) "::" 647 COLON2@1090..1092 "::"
648 NAME_REF@[1092; 1097) 648 NAME_REF@1092..1097
649 IDENT@[1092; 1097) "c_int" 649 IDENT@1092..1097 "c_int"
650 COMMA@[1097; 1098) "," 650 COMMA@1097..1098 ","
651 WHITESPACE@[1098; 1099) " " 651 WHITESPACE@1098..1099 " "
652 PARAM@[1099; 1120) 652 PARAM@1099..1120
653 BIND_PAT@[1099; 1103) 653 BIND_PAT@1099..1103
654 NAME@[1099; 1103) 654 NAME@1099..1103
655 IDENT@[1099; 1103) "addr" 655 IDENT@1099..1103 "addr"
656 COLON@[1103; 1104) ":" 656 COLON@1103..1104 ":"
657 WHITESPACE@[1104; 1105) " " 657 WHITESPACE@1104..1105 " "
658 POINTER_TYPE@[1105; 1120) 658 POINTER_TYPE@1105..1120
659 STAR@[1105; 1106) "*" 659 STAR@1105..1106 "*"
660 CONST_KW@[1106; 1111) "const" 660 CONST_KW@1106..1111 "const"
661 WHITESPACE@[1111; 1112) " " 661 WHITESPACE@1111..1112 " "
662 PATH_TYPE@[1112; 1120) 662 PATH_TYPE@1112..1120
663 PATH@[1112; 1120) 663 PATH@1112..1120
664 PATH_SEGMENT@[1112; 1120) 664 PATH_SEGMENT@1112..1120
665 NAME_REF@[1112; 1120) 665 NAME_REF@1112..1120
666 IDENT@[1112; 1120) "sockaddr" 666 IDENT@1112..1120 "sockaddr"
667 COMMA@[1120; 1121) "," 667 COMMA@1120..1121 ","
668 WHITESPACE@[1121; 1140) "\n " 668 WHITESPACE@1121..1140 "\n "
669 PARAM@[1140; 1158) 669 PARAM@1140..1158
670 BIND_PAT@[1140; 1147) 670 BIND_PAT@1140..1147
671 NAME@[1140; 1147) 671 NAME@1140..1147
672 IDENT@[1140; 1147) "addrlen" 672 IDENT@1140..1147 "addrlen"
673 COLON@[1147; 1148) ":" 673 COLON@1147..1148 ":"
674 WHITESPACE@[1148; 1149) " " 674 WHITESPACE@1148..1149 " "
675 PATH_TYPE@[1149; 1158) 675 PATH_TYPE@1149..1158
676 PATH@[1149; 1158) 676 PATH@1149..1158
677 PATH_SEGMENT@[1149; 1158) 677 PATH_SEGMENT@1149..1158
678 NAME_REF@[1149; 1158) 678 NAME_REF@1149..1158
679 IDENT@[1149; 1158) "socklen_t" 679 IDENT@1149..1158 "socklen_t"
680 R_PAREN@[1158; 1159) ")" 680 R_PAREN@1158..1159 ")"
681 WHITESPACE@[1159; 1160) " " 681 WHITESPACE@1159..1160 " "
682 RET_TYPE@[1160; 1172) 682 RET_TYPE@1160..1172
683 THIN_ARROW@[1160; 1162) "->" 683 THIN_ARROW@1160..1162 "->"
684 WHITESPACE@[1162; 1163) " " 684 WHITESPACE@1162..1163 " "
685 PATH_TYPE@[1163; 1172) 685 PATH_TYPE@1163..1172
686 PATH@[1163; 1172) 686 PATH@1163..1172
687 PATH_SEGMENT@[1163; 1172) 687 PATH_SEGMENT@1163..1172
688 COLON2@[1163; 1165) "::" 688 COLON2@1163..1165 "::"
689 NAME_REF@[1165; 1172) 689 NAME_REF@1165..1172
690 IDENT@[1165; 1172) "ssize_t" 690 IDENT@1165..1172 "ssize_t"
691 SEMICOLON@[1172; 1173) ";" 691 SEMICOLON@1172..1173 ";"
692 WHITESPACE@[1173; 1178) "\n " 692 WHITESPACE@1173..1178 "\n "
693 FN_DEF@[1178; 1289) 693 FN_DEF@1178..1289
694 VISIBILITY@[1178; 1181) 694 VISIBILITY@1178..1181
695 PUB_KW@[1178; 1181) "pub" 695 PUB_KW@1178..1181 "pub"
696 WHITESPACE@[1181; 1182) " " 696 WHITESPACE@1181..1182 " "
697 FN_KW@[1182; 1184) "fn" 697 FN_KW@1182..1184 "fn"
698 WHITESPACE@[1184; 1185) " " 698 WHITESPACE@1184..1185 " "
699 NAME@[1185; 1189) 699 NAME@1185..1189
700 IDENT@[1185; 1189) "send" 700 IDENT@1185..1189 "send"
701 PARAM_LIST@[1189; 1275) 701 PARAM_LIST@1189..1275
702 L_PAREN@[1189; 1190) "(" 702 L_PAREN@1189..1190 "("
703 PARAM@[1190; 1205) 703 PARAM@1190..1205
704 BIND_PAT@[1190; 1196) 704 BIND_PAT@1190..1196
705 NAME@[1190; 1196) 705 NAME@1190..1196
706 IDENT@[1190; 1196) "socket" 706 IDENT@1190..1196 "socket"
707 COLON@[1196; 1197) ":" 707 COLON@1196..1197 ":"
708 WHITESPACE@[1197; 1198) " " 708 WHITESPACE@1197..1198 " "
709 PATH_TYPE@[1198; 1205) 709 PATH_TYPE@1198..1205
710 PATH@[1198; 1205) 710 PATH@1198..1205
711 PATH_SEGMENT@[1198; 1205) 711 PATH_SEGMENT@1198..1205
712 COLON2@[1198; 1200) "::" 712 COLON2@1198..1200 "::"
713 NAME_REF@[1200; 1205) 713 NAME_REF@1200..1205
714 IDENT@[1200; 1205) "c_int" 714 IDENT@1200..1205 "c_int"
715 COMMA@[1205; 1206) "," 715 COMMA@1205..1206 ","
716 WHITESPACE@[1206; 1207) " " 716 WHITESPACE@1206..1207 " "
717 PARAM@[1207; 1227) 717 PARAM@1207..1227
718 BIND_PAT@[1207; 1210) 718 BIND_PAT@1207..1210
719 NAME@[1207; 1210) 719 NAME@1207..1210
720 IDENT@[1207; 1210) "buf" 720 IDENT@1207..1210 "buf"
721 COLON@[1210; 1211) ":" 721 COLON@1210..1211 ":"
722 WHITESPACE@[1211; 1212) " " 722 WHITESPACE@1211..1212 " "
723 POINTER_TYPE@[1212; 1227) 723 POINTER_TYPE@1212..1227
724 STAR@[1212; 1213) "*" 724 STAR@1212..1213 "*"
725 CONST_KW@[1213; 1218) "const" 725 CONST_KW@1213..1218 "const"
726 WHITESPACE@[1218; 1219) " " 726 WHITESPACE@1218..1219 " "
727 PATH_TYPE@[1219; 1227) 727 PATH_TYPE@1219..1227
728 PATH@[1219; 1227) 728 PATH@1219..1227
729 PATH_SEGMENT@[1219; 1227) 729 PATH_SEGMENT@1219..1227
730 COLON2@[1219; 1221) "::" 730 COLON2@1219..1221 "::"
731 NAME_REF@[1221; 1227) 731 NAME_REF@1221..1227
732 IDENT@[1221; 1227) "c_void" 732 IDENT@1221..1227 "c_void"
733 COMMA@[1227; 1228) "," 733 COMMA@1227..1228 ","
734 WHITESPACE@[1228; 1229) " " 734 WHITESPACE@1228..1229 " "
735 PARAM@[1229; 1242) 735 PARAM@1229..1242
736 BIND_PAT@[1229; 1232) 736 BIND_PAT@1229..1232
737 NAME@[1229; 1232) 737 NAME@1229..1232
738 IDENT@[1229; 1232) "len" 738 IDENT@1229..1232 "len"
739 COLON@[1232; 1233) ":" 739 COLON@1232..1233 ":"
740 WHITESPACE@[1233; 1234) " " 740 WHITESPACE@1233..1234 " "
741 PATH_TYPE@[1234; 1242) 741 PATH_TYPE@1234..1242
742 PATH@[1234; 1242) 742 PATH@1234..1242
743 PATH_SEGMENT@[1234; 1242) 743 PATH_SEGMENT@1234..1242
744 COLON2@[1234; 1236) "::" 744 COLON2@1234..1236 "::"
745 NAME_REF@[1236; 1242) 745 NAME_REF@1236..1242
746 IDENT@[1236; 1242) "size_t" 746 IDENT@1236..1242 "size_t"
747 COMMA@[1242; 1243) "," 747 COMMA@1242..1243 ","
748 WHITESPACE@[1243; 1260) "\n " 748 WHITESPACE@1243..1260 "\n "
749 PARAM@[1260; 1274) 749 PARAM@1260..1274
750 BIND_PAT@[1260; 1265) 750 BIND_PAT@1260..1265
751 NAME@[1260; 1265) 751 NAME@1260..1265
752 IDENT@[1260; 1265) "flags" 752 IDENT@1260..1265 "flags"
753 COLON@[1265; 1266) ":" 753 COLON@1265..1266 ":"
754 WHITESPACE@[1266; 1267) " " 754 WHITESPACE@1266..1267 " "
755 PATH_TYPE@[1267; 1274) 755 PATH_TYPE@1267..1274
756 PATH@[1267; 1274) 756 PATH@1267..1274
757 PATH_SEGMENT@[1267; 1274) 757 PATH_SEGMENT@1267..1274
758 COLON2@[1267; 1269) "::" 758 COLON2@1267..1269 "::"
759 NAME_REF@[1269; 1274) 759 NAME_REF@1269..1274
760 IDENT@[1269; 1274) "c_int" 760 IDENT@1269..1274 "c_int"
761 R_PAREN@[1274; 1275) ")" 761 R_PAREN@1274..1275 ")"
762 WHITESPACE@[1275; 1276) " " 762 WHITESPACE@1275..1276 " "
763 RET_TYPE@[1276; 1288) 763 RET_TYPE@1276..1288
764 THIN_ARROW@[1276; 1278) "->" 764 THIN_ARROW@1276..1278 "->"
765 WHITESPACE@[1278; 1279) " " 765 WHITESPACE@1278..1279 " "
766 PATH_TYPE@[1279; 1288) 766 PATH_TYPE@1279..1288
767 PATH@[1279; 1288) 767 PATH@1279..1288
768 PATH_SEGMENT@[1279; 1288) 768 PATH_SEGMENT@1279..1288
769 COLON2@[1279; 1281) "::" 769 COLON2@1279..1281 "::"
770 NAME_REF@[1281; 1288) 770 NAME_REF@1281..1288
771 IDENT@[1281; 1288) "ssize_t" 771 IDENT@1281..1288 "ssize_t"
772 SEMICOLON@[1288; 1289) ";" 772 SEMICOLON@1288..1289 ";"
773 WHITESPACE@[1289; 1294) "\n " 773 WHITESPACE@1289..1294 "\n "
774 FN_DEF@[1294; 1481) 774 FN_DEF@1294..1481
775 VISIBILITY@[1294; 1297) 775 VISIBILITY@1294..1297
776 PUB_KW@[1294; 1297) "pub" 776 PUB_KW@1294..1297 "pub"
777 WHITESPACE@[1297; 1298) " " 777 WHITESPACE@1297..1298 " "
778 FN_KW@[1298; 1300) "fn" 778 FN_KW@1298..1300 "fn"
779 WHITESPACE@[1300; 1301) " " 779 WHITESPACE@1300..1301 " "
780 NAME@[1301; 1309) 780 NAME@1301..1309
781 IDENT@[1301; 1309) "recvfrom" 781 IDENT@1301..1309 "recvfrom"
782 PARAM_LIST@[1309; 1467) 782 PARAM_LIST@1309..1467
783 L_PAREN@[1309; 1310) "(" 783 L_PAREN@1309..1310 "("
784 PARAM@[1310; 1325) 784 PARAM@1310..1325
785 BIND_PAT@[1310; 1316) 785 BIND_PAT@1310..1316
786 NAME@[1310; 1316) 786 NAME@1310..1316
787 IDENT@[1310; 1316) "socket" 787 IDENT@1310..1316 "socket"
788 COLON@[1316; 1317) ":" 788 COLON@1316..1317 ":"
789 WHITESPACE@[1317; 1318) " " 789 WHITESPACE@1317..1318 " "
790 PATH_TYPE@[1318; 1325) 790 PATH_TYPE@1318..1325
791 PATH@[1318; 1325) 791 PATH@1318..1325
792 PATH_SEGMENT@[1318; 1325) 792 PATH_SEGMENT@1318..1325
793 COLON2@[1318; 1320) "::" 793 COLON2@1318..1320 "::"
794 NAME_REF@[1320; 1325) 794 NAME_REF@1320..1325
795 IDENT@[1320; 1325) "c_int" 795 IDENT@1320..1325 "c_int"
796 COMMA@[1325; 1326) "," 796 COMMA@1325..1326 ","
797 WHITESPACE@[1326; 1327) " " 797 WHITESPACE@1326..1327 " "
798 PARAM@[1327; 1345) 798 PARAM@1327..1345
799 BIND_PAT@[1327; 1330) 799 BIND_PAT@1327..1330
800 NAME@[1327; 1330) 800 NAME@1327..1330
801 IDENT@[1327; 1330) "buf" 801 IDENT@1327..1330 "buf"
802 COLON@[1330; 1331) ":" 802 COLON@1330..1331 ":"
803 WHITESPACE@[1331; 1332) " " 803 WHITESPACE@1331..1332 " "
804 POINTER_TYPE@[1332; 1345) 804 POINTER_TYPE@1332..1345
805 STAR@[1332; 1333) "*" 805 STAR@1332..1333 "*"
806 MUT_KW@[1333; 1336) "mut" 806 MUT_KW@1333..1336 "mut"
807 WHITESPACE@[1336; 1337) " " 807 WHITESPACE@1336..1337 " "
808 PATH_TYPE@[1337; 1345) 808 PATH_TYPE@1337..1345
809 PATH@[1337; 1345) 809 PATH@1337..1345
810 PATH_SEGMENT@[1337; 1345) 810 PATH_SEGMENT@1337..1345
811 COLON2@[1337; 1339) "::" 811 COLON2@1337..1339 "::"
812 NAME_REF@[1339; 1345) 812 NAME_REF@1339..1345
813 IDENT@[1339; 1345) "c_void" 813 IDENT@1339..1345 "c_void"
814 COMMA@[1345; 1346) "," 814 COMMA@1345..1346 ","
815 WHITESPACE@[1346; 1347) " " 815 WHITESPACE@1346..1347 " "
816 PARAM@[1347; 1360) 816 PARAM@1347..1360
817 BIND_PAT@[1347; 1350) 817 BIND_PAT@1347..1350
818 NAME@[1347; 1350) 818 NAME@1347..1350
819 IDENT@[1347; 1350) "len" 819 IDENT@1347..1350 "len"
820 COLON@[1350; 1351) ":" 820 COLON@1350..1351 ":"
821 WHITESPACE@[1351; 1352) " " 821 WHITESPACE@1351..1352 " "
822 PATH_TYPE@[1352; 1360) 822 PATH_TYPE@1352..1360
823 PATH@[1352; 1360) 823 PATH@1352..1360
824 PATH_SEGMENT@[1352; 1360) 824 PATH_SEGMENT@1352..1360
825 COLON2@[1352; 1354) "::" 825 COLON2@1352..1354 "::"
826 NAME_REF@[1354; 1360) 826 NAME_REF@1354..1360
827 IDENT@[1354; 1360) "size_t" 827 IDENT@1354..1360 "size_t"
828 COMMA@[1360; 1361) "," 828 COMMA@1360..1361 ","
829 WHITESPACE@[1361; 1382) "\n " 829 WHITESPACE@1361..1382 "\n "
830 PARAM@[1382; 1396) 830 PARAM@1382..1396
831 BIND_PAT@[1382; 1387) 831 BIND_PAT@1382..1387
832 NAME@[1382; 1387) 832 NAME@1382..1387
833 IDENT@[1382; 1387) "flags" 833 IDENT@1382..1387 "flags"
834 COLON@[1387; 1388) ":" 834 COLON@1387..1388 ":"
835 WHITESPACE@[1388; 1389) " " 835 WHITESPACE@1388..1389 " "
836 PATH_TYPE@[1389; 1396) 836 PATH_TYPE@1389..1396
837 PATH@[1389; 1396) 837 PATH@1389..1396
838 PATH_SEGMENT@[1389; 1396) 838 PATH_SEGMENT@1389..1396
839 COLON2@[1389; 1391) "::" 839 COLON2@1389..1391 "::"
840 NAME_REF@[1391; 1396) 840 NAME_REF@1391..1396
841 IDENT@[1391; 1396) "c_int" 841 IDENT@1391..1396 "c_int"
842 COMMA@[1396; 1397) "," 842 COMMA@1396..1397 ","
843 WHITESPACE@[1397; 1398) " " 843 WHITESPACE@1397..1398 " "
844 PARAM@[1398; 1419) 844 PARAM@1398..1419
845 BIND_PAT@[1398; 1402) 845 BIND_PAT@1398..1402
846 NAME@[1398; 1402) 846 NAME@1398..1402
847 IDENT@[1398; 1402) "addr" 847 IDENT@1398..1402 "addr"
848 COLON@[1402; 1403) ":" 848 COLON@1402..1403 ":"
849 WHITESPACE@[1403; 1404) " " 849 WHITESPACE@1403..1404 " "
850 POINTER_TYPE@[1404; 1419) 850 POINTER_TYPE@1404..1419
851 STAR@[1404; 1405) "*" 851 STAR@1404..1405 "*"
852 MUT_KW@[1405; 1408) "mut" 852 MUT_KW@1405..1408 "mut"
853 WHITESPACE@[1408; 1409) " " 853 WHITESPACE@1408..1409 " "
854 PATH_TYPE@[1409; 1419) 854 PATH_TYPE@1409..1419
855 PATH@[1409; 1419) 855 PATH@1409..1419
856 PATH_SEGMENT@[1409; 1419) 856 PATH_SEGMENT@1409..1419
857 COLON2@[1409; 1411) "::" 857 COLON2@1409..1411 "::"
858 NAME_REF@[1411; 1419) 858 NAME_REF@1411..1419
859 IDENT@[1411; 1419) "sockaddr" 859 IDENT@1411..1419 "sockaddr"
860 COMMA@[1419; 1420) "," 860 COMMA@1419..1420 ","
861 WHITESPACE@[1420; 1441) "\n " 861 WHITESPACE@1420..1441 "\n "
862 PARAM@[1441; 1466) 862 PARAM@1441..1466
863 BIND_PAT@[1441; 1448) 863 BIND_PAT@1441..1448
864 NAME@[1441; 1448) 864 NAME@1441..1448
865 IDENT@[1441; 1448) "addrlen" 865 IDENT@1441..1448 "addrlen"
866 COLON@[1448; 1449) ":" 866 COLON@1448..1449 ":"
867 WHITESPACE@[1449; 1450) " " 867 WHITESPACE@1449..1450 " "
868 POINTER_TYPE@[1450; 1466) 868 POINTER_TYPE@1450..1466
869 STAR@[1450; 1451) "*" 869 STAR@1450..1451 "*"
870 MUT_KW@[1451; 1454) "mut" 870 MUT_KW@1451..1454 "mut"
871 WHITESPACE@[1454; 1455) " " 871 WHITESPACE@1454..1455 " "
872 PATH_TYPE@[1455; 1466) 872 PATH_TYPE@1455..1466
873 PATH@[1455; 1466) 873 PATH@1455..1466
874 PATH_SEGMENT@[1455; 1466) 874 PATH_SEGMENT@1455..1466
875 COLON2@[1455; 1457) "::" 875 COLON2@1455..1457 "::"
876 NAME_REF@[1457; 1466) 876 NAME_REF@1457..1466
877 IDENT@[1457; 1466) "socklen_t" 877 IDENT@1457..1466 "socklen_t"
878 R_PAREN@[1466; 1467) ")" 878 R_PAREN@1466..1467 ")"
879 WHITESPACE@[1467; 1468) " " 879 WHITESPACE@1467..1468 " "
880 RET_TYPE@[1468; 1480) 880 RET_TYPE@1468..1480
881 THIN_ARROW@[1468; 1470) "->" 881 THIN_ARROW@1468..1470 "->"
882 WHITESPACE@[1470; 1471) " " 882 WHITESPACE@1470..1471 " "
883 PATH_TYPE@[1471; 1480) 883 PATH_TYPE@1471..1480
884 PATH@[1471; 1480) 884 PATH@1471..1480
885 PATH_SEGMENT@[1471; 1480) 885 PATH_SEGMENT@1471..1480
886 COLON2@[1471; 1473) "::" 886 COLON2@1471..1473 "::"
887 NAME_REF@[1473; 1480) 887 NAME_REF@1473..1480
888 IDENT@[1473; 1480) "ssize_t" 888 IDENT@1473..1480 "ssize_t"
889 SEMICOLON@[1480; 1481) ";" 889 SEMICOLON@1480..1481 ";"
890 WHITESPACE@[1481; 1486) "\n " 890 WHITESPACE@1481..1486 "\n "
891 FN_DEF@[1486; 1595) 891 FN_DEF@1486..1595
892 VISIBILITY@[1486; 1489) 892 VISIBILITY@1486..1489
893 PUB_KW@[1486; 1489) "pub" 893 PUB_KW@1486..1489 "pub"
894 WHITESPACE@[1489; 1490) " " 894 WHITESPACE@1489..1490 " "
895 FN_KW@[1490; 1492) "fn" 895 FN_KW@1490..1492 "fn"
896 WHITESPACE@[1492; 1493) " " 896 WHITESPACE@1492..1493 " "
897 NAME@[1493; 1497) 897 NAME@1493..1497
898 IDENT@[1493; 1497) "recv" 898 IDENT@1493..1497 "recv"
899 PARAM_LIST@[1497; 1581) 899 PARAM_LIST@1497..1581
900 L_PAREN@[1497; 1498) "(" 900 L_PAREN@1497..1498 "("
901 PARAM@[1498; 1513) 901 PARAM@1498..1513
902 BIND_PAT@[1498; 1504) 902 BIND_PAT@1498..1504
903 NAME@[1498; 1504) 903 NAME@1498..1504
904 IDENT@[1498; 1504) "socket" 904 IDENT@1498..1504 "socket"
905 COLON@[1504; 1505) ":" 905 COLON@1504..1505 ":"
906 WHITESPACE@[1505; 1506) " " 906 WHITESPACE@1505..1506 " "
907 PATH_TYPE@[1506; 1513) 907 PATH_TYPE@1506..1513
908 PATH@[1506; 1513) 908 PATH@1506..1513
909 PATH_SEGMENT@[1506; 1513) 909 PATH_SEGMENT@1506..1513
910 COLON2@[1506; 1508) "::" 910 COLON2@1506..1508 "::"
911 NAME_REF@[1508; 1513) 911 NAME_REF@1508..1513
912 IDENT@[1508; 1513) "c_int" 912 IDENT@1508..1513 "c_int"
913 COMMA@[1513; 1514) "," 913 COMMA@1513..1514 ","
914 WHITESPACE@[1514; 1515) " " 914 WHITESPACE@1514..1515 " "
915 PARAM@[1515; 1533) 915 PARAM@1515..1533
916 BIND_PAT@[1515; 1518) 916 BIND_PAT@1515..1518
917 NAME@[1515; 1518) 917 NAME@1515..1518
918 IDENT@[1515; 1518) "buf" 918 IDENT@1515..1518 "buf"
919 COLON@[1518; 1519) ":" 919 COLON@1518..1519 ":"
920 WHITESPACE@[1519; 1520) " " 920 WHITESPACE@1519..1520 " "
921 POINTER_TYPE@[1520; 1533) 921 POINTER_TYPE@1520..1533
922 STAR@[1520; 1521) "*" 922 STAR@1520..1521 "*"
923 MUT_KW@[1521; 1524) "mut" 923 MUT_KW@1521..1524 "mut"
924 WHITESPACE@[1524; 1525) " " 924 WHITESPACE@1524..1525 " "
925 PATH_TYPE@[1525; 1533) 925 PATH_TYPE@1525..1533
926 PATH@[1525; 1533) 926 PATH@1525..1533
927 PATH_SEGMENT@[1525; 1533) 927 PATH_SEGMENT@1525..1533
928 COLON2@[1525; 1527) "::" 928 COLON2@1525..1527 "::"
929 NAME_REF@[1527; 1533) 929 NAME_REF@1527..1533
930 IDENT@[1527; 1533) "c_void" 930 IDENT@1527..1533 "c_void"
931 COMMA@[1533; 1534) "," 931 COMMA@1533..1534 ","
932 WHITESPACE@[1534; 1535) " " 932 WHITESPACE@1534..1535 " "
933 PARAM@[1535; 1548) 933 PARAM@1535..1548
934 BIND_PAT@[1535; 1538) 934 BIND_PAT@1535..1538
935 NAME@[1535; 1538) 935 NAME@1535..1538
936 IDENT@[1535; 1538) "len" 936 IDENT@1535..1538 "len"
937 COLON@[1538; 1539) ":" 937 COLON@1538..1539 ":"
938 WHITESPACE@[1539; 1540) " " 938 WHITESPACE@1539..1540 " "
939 PATH_TYPE@[1540; 1548) 939 PATH_TYPE@1540..1548
940 PATH@[1540; 1548) 940 PATH@1540..1548
941 PATH_SEGMENT@[1540; 1548) 941 PATH_SEGMENT@1540..1548
942 COLON2@[1540; 1542) "::" 942 COLON2@1540..1542 "::"
943 NAME_REF@[1542; 1548) 943 NAME_REF@1542..1548
944 IDENT@[1542; 1548) "size_t" 944 IDENT@1542..1548 "size_t"
945 COMMA@[1548; 1549) "," 945 COMMA@1548..1549 ","
946 WHITESPACE@[1549; 1566) "\n " 946 WHITESPACE@1549..1566 "\n "
947 PARAM@[1566; 1580) 947 PARAM@1566..1580
948 BIND_PAT@[1566; 1571) 948 BIND_PAT@1566..1571
949 NAME@[1566; 1571) 949 NAME@1566..1571
950 IDENT@[1566; 1571) "flags" 950 IDENT@1566..1571 "flags"
951 COLON@[1571; 1572) ":" 951 COLON@1571..1572 ":"
952 WHITESPACE@[1572; 1573) " " 952 WHITESPACE@1572..1573 " "
953 PATH_TYPE@[1573; 1580) 953 PATH_TYPE@1573..1580
954 PATH@[1573; 1580) 954 PATH@1573..1580
955 PATH_SEGMENT@[1573; 1580) 955 PATH_SEGMENT@1573..1580
956 COLON2@[1573; 1575) "::" 956 COLON2@1573..1575 "::"
957 NAME_REF@[1575; 1580) 957 NAME_REF@1575..1580
958 IDENT@[1575; 1580) "c_int" 958 IDENT@1575..1580 "c_int"
959 R_PAREN@[1580; 1581) ")" 959 R_PAREN@1580..1581 ")"
960 WHITESPACE@[1581; 1582) " " 960 WHITESPACE@1581..1582 " "
961 RET_TYPE@[1582; 1594) 961 RET_TYPE@1582..1594
962 THIN_ARROW@[1582; 1584) "->" 962 THIN_ARROW@1582..1584 "->"
963 WHITESPACE@[1584; 1585) " " 963 WHITESPACE@1584..1585 " "
964 PATH_TYPE@[1585; 1594) 964 PATH_TYPE@1585..1594
965 PATH@[1585; 1594) 965 PATH@1585..1594
966 PATH_SEGMENT@[1585; 1594) 966 PATH_SEGMENT@1585..1594
967 COLON2@[1585; 1587) "::" 967 COLON2@1585..1587 "::"
968 NAME_REF@[1587; 1594) 968 NAME_REF@1587..1594
969 IDENT@[1587; 1594) "ssize_t" 969 IDENT@1587..1594 "ssize_t"
970 SEMICOLON@[1594; 1595) ";" 970 SEMICOLON@1594..1595 ";"
971 WHITESPACE@[1595; 1596) "\n" 971 WHITESPACE@1595..1596 "\n"
972 R_CURLY@[1596; 1597) "}" 972 R_CURLY@1596..1597 "}"
973 WHITESPACE@[1597; 1598) "\n" 973 WHITESPACE@1597..1598 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0032_where_for.rast b/crates/ra_syntax/test_data/parser/ok/0032_where_for.rast
index f71cf5b6c..68eb16bbd 100644
--- a/crates/ra_syntax/test_data/parser/ok/0032_where_for.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0032_where_for.rast
@@ -1,91 +1,91 @@
1SOURCE_FILE@[0; 116) 1SOURCE_FILE@0..116
2 FN_DEF@[0; 115) 2 FN_DEF@0..115
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 21) 5 NAME@3..21
6 IDENT@[3; 21) "test_serialization" 6 IDENT@3..21 "test_serialization"
7 TYPE_PARAM_LIST@[21; 26) 7 TYPE_PARAM_LIST@21..26
8 L_ANGLE@[21; 22) "<" 8 L_ANGLE@21..22 "<"
9 TYPE_PARAM@[22; 25) 9 TYPE_PARAM@22..25
10 NAME@[22; 25) 10 NAME@22..25
11 IDENT@[22; 25) "SER" 11 IDENT@22..25 "SER"
12 R_ANGLE@[25; 26) ">" 12 R_ANGLE@25..26 ">"
13 PARAM_LIST@[26; 28) 13 PARAM_LIST@26..28
14 L_PAREN@[26; 27) "(" 14 L_PAREN@26..27 "("
15 R_PAREN@[27; 28) ")" 15 R_PAREN@27..28 ")"
16 WHITESPACE@[28; 29) "\n" 16 WHITESPACE@28..29 "\n"
17 WHERE_CLAUSE@[29; 112) 17 WHERE_CLAUSE@29..112
18 WHERE_KW@[29; 34) "where" 18 WHERE_KW@29..34 "where"
19 WHITESPACE@[34; 39) "\n " 19 WHITESPACE@34..39 "\n "
20 WHERE_PRED@[39; 111) 20 WHERE_PRED@39..111
21 PATH_TYPE@[39; 42) 21 PATH_TYPE@39..42
22 PATH@[39; 42) 22 PATH@39..42
23 PATH_SEGMENT@[39; 42) 23 PATH_SEGMENT@39..42
24 NAME_REF@[39; 42) 24 NAME_REF@39..42
25 IDENT@[39; 42) "SER" 25 IDENT@39..42 "SER"
26 COLON@[42; 43) ":" 26 COLON@42..43 ":"
27 WHITESPACE@[43; 44) " " 27 WHITESPACE@43..44 " "
28 TYPE_BOUND_LIST@[44; 111) 28 TYPE_BOUND_LIST@44..111
29 TYPE_BOUND@[44; 53) 29 TYPE_BOUND@44..53
30 PATH_TYPE@[44; 53) 30 PATH_TYPE@44..53
31 PATH@[44; 53) 31 PATH@44..53
32 PATH_SEGMENT@[44; 53) 32 PATH_SEGMENT@44..53
33 NAME_REF@[44; 53) 33 NAME_REF@44..53
34 IDENT@[44; 53) "Serialize" 34 IDENT@44..53 "Serialize"
35 WHITESPACE@[53; 54) " " 35 WHITESPACE@53..54 " "
36 PLUS@[54; 55) "+" 36 PLUS@54..55 "+"
37 WHITESPACE@[55; 56) " " 37 WHITESPACE@55..56 " "
38 TYPE_BOUND@[56; 81) 38 TYPE_BOUND@56..81
39 FOR_TYPE@[56; 81) 39 FOR_TYPE@56..81
40 FOR_KW@[56; 59) "for" 40 FOR_KW@56..59 "for"
41 TYPE_PARAM_LIST@[59; 64) 41 TYPE_PARAM_LIST@59..64
42 L_ANGLE@[59; 60) "<" 42 L_ANGLE@59..60 "<"
43 LIFETIME_PARAM@[60; 63) 43 LIFETIME_PARAM@60..63
44 LIFETIME@[60; 63) "\'de" 44 LIFETIME@60..63 "\'de"
45 R_ANGLE@[63; 64) ">" 45 R_ANGLE@63..64 ">"
46 WHITESPACE@[64; 65) " " 46 WHITESPACE@64..65 " "
47 PATH_TYPE@[65; 81) 47 PATH_TYPE@65..81
48 PATH@[65; 81) 48 PATH@65..81
49 PATH_SEGMENT@[65; 81) 49 PATH_SEGMENT@65..81
50 NAME_REF@[65; 76) 50 NAME_REF@65..76
51 IDENT@[65; 76) "Deserialize" 51 IDENT@65..76 "Deserialize"
52 TYPE_ARG_LIST@[76; 81) 52 TYPE_ARG_LIST@76..81
53 L_ANGLE@[76; 77) "<" 53 L_ANGLE@76..77 "<"
54 LIFETIME_ARG@[77; 80) 54 LIFETIME_ARG@77..80
55 LIFETIME@[77; 80) "\'de" 55 LIFETIME@77..80 "\'de"
56 R_ANGLE@[80; 81) ">" 56 R_ANGLE@80..81 ">"
57 WHITESPACE@[81; 82) " " 57 WHITESPACE@81..82 " "
58 PLUS@[82; 83) "+" 58 PLUS@82..83 "+"
59 WHITESPACE@[83; 84) " " 59 WHITESPACE@83..84 " "
60 TYPE_BOUND@[84; 93) 60 TYPE_BOUND@84..93
61 PATH_TYPE@[84; 93) 61 PATH_TYPE@84..93
62 PATH@[84; 93) 62 PATH@84..93
63 PATH_SEGMENT@[84; 93) 63 PATH_SEGMENT@84..93
64 NAME_REF@[84; 93) 64 NAME_REF@84..93
65 IDENT@[84; 93) "PartialEq" 65 IDENT@84..93 "PartialEq"
66 WHITESPACE@[93; 94) " " 66 WHITESPACE@93..94 " "
67 PLUS@[94; 95) "+" 67 PLUS@94..95 "+"
68 WHITESPACE@[95; 96) " " 68 WHITESPACE@95..96 " "
69 TYPE_BOUND@[96; 111) 69 TYPE_BOUND@96..111
70 PATH_TYPE@[96; 111) 70 PATH_TYPE@96..111
71 PATH@[96; 111) 71 PATH@96..111
72 PATH@[96; 104) 72 PATH@96..104
73 PATH@[96; 99) 73 PATH@96..99
74 PATH_SEGMENT@[96; 99) 74 PATH_SEGMENT@96..99
75 NAME_REF@[96; 99) 75 NAME_REF@96..99
76 IDENT@[96; 99) "std" 76 IDENT@96..99 "std"
77 COLON2@[99; 101) "::" 77 COLON2@99..101 "::"
78 PATH_SEGMENT@[101; 104) 78 PATH_SEGMENT@101..104
79 NAME_REF@[101; 104) 79 NAME_REF@101..104
80 IDENT@[101; 104) "fmt" 80 IDENT@101..104 "fmt"
81 COLON2@[104; 106) "::" 81 COLON2@104..106 "::"
82 PATH_SEGMENT@[106; 111) 82 PATH_SEGMENT@106..111
83 NAME_REF@[106; 111) 83 NAME_REF@106..111
84 IDENT@[106; 111) "Debug" 84 IDENT@106..111 "Debug"
85 COMMA@[111; 112) "," 85 COMMA@111..112 ","
86 WHITESPACE@[112; 113) "\n" 86 WHITESPACE@112..113 "\n"
87 BLOCK_EXPR@[113; 115) 87 BLOCK_EXPR@113..115
88 BLOCK@[113; 115) 88 BLOCK@113..115
89 L_CURLY@[113; 114) "{" 89 L_CURLY@113..114 "{"
90 R_CURLY@[114; 115) "}" 90 R_CURLY@114..115 "}"
91 WHITESPACE@[115; 116) "\n" 91 WHITESPACE@115..116 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0033_label_break.rast b/crates/ra_syntax/test_data/parser/ok/0033_label_break.rast
index 8af41caa0..3977faa60 100644
--- a/crates/ra_syntax/test_data/parser/ok/0033_label_break.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0033_label_break.rast
@@ -1,220 +1,220 @@
1SOURCE_FILE@[0; 506) 1SOURCE_FILE@0..506
2 FN_DEF@[0; 505) 2 FN_DEF@0..505
3 COMMENT@[0; 33) "// format with label ..." 3 COMMENT@0..33 "// format with label ..."
4 WHITESPACE@[33; 34) "\n" 4 WHITESPACE@33..34 "\n"
5 FN_KW@[34; 36) "fn" 5 FN_KW@34..36 "fn"
6 WHITESPACE@[36; 37) " " 6 WHITESPACE@36..37 " "
7 NAME@[37; 41) 7 NAME@37..41
8 IDENT@[37; 41) "main" 8 IDENT@37..41 "main"
9 PARAM_LIST@[41; 43) 9 PARAM_LIST@41..43
10 L_PAREN@[41; 42) "(" 10 L_PAREN@41..42 "("
11 R_PAREN@[42; 43) ")" 11 R_PAREN@42..43 ")"
12 WHITESPACE@[43; 44) " " 12 WHITESPACE@43..44 " "
13 BLOCK_EXPR@[44; 505) 13 BLOCK_EXPR@44..505
14 BLOCK@[44; 505) 14 BLOCK@44..505
15 L_CURLY@[44; 45) "{" 15 L_CURLY@44..45 "{"
16 WHITESPACE@[45; 50) "\n " 16 WHITESPACE@45..50 "\n "
17 EXPR_STMT@[50; 66) 17 EXPR_STMT@50..66
18 BLOCK_EXPR@[50; 66) 18 BLOCK_EXPR@50..66
19 LABEL@[50; 63) 19 LABEL@50..63
20 LIFETIME@[50; 62) "\'empty_block" 20 LIFETIME@50..62 "\'empty_block"
21 COLON@[62; 63) ":" 21 COLON@62..63 ":"
22 WHITESPACE@[63; 64) " " 22 WHITESPACE@63..64 " "
23 BLOCK@[64; 66) 23 BLOCK@64..66
24 L_CURLY@[64; 65) "{" 24 L_CURLY@64..65 "{"
25 R_CURLY@[65; 66) "}" 25 R_CURLY@65..66 "}"
26 WHITESPACE@[66; 72) "\n\n " 26 WHITESPACE@66..72 "\n\n "
27 EXPR_STMT@[72; 295) 27 EXPR_STMT@72..295
28 BLOCK_EXPR@[72; 295) 28 BLOCK_EXPR@72..295
29 LABEL@[72; 79) 29 LABEL@72..79
30 LIFETIME@[72; 78) "\'block" 30 LIFETIME@72..78 "\'block"
31 COLON@[78; 79) ":" 31 COLON@78..79 ":"
32 WHITESPACE@[79; 80) " " 32 WHITESPACE@79..80 " "
33 BLOCK@[80; 295) 33 BLOCK@80..295
34 L_CURLY@[80; 81) "{" 34 L_CURLY@80..81 "{"
35 WHITESPACE@[81; 90) "\n " 35 WHITESPACE@81..90 "\n "
36 EXPR_STMT@[90; 101) 36 EXPR_STMT@90..101
37 CALL_EXPR@[90; 100) 37 CALL_EXPR@90..100
38 PATH_EXPR@[90; 98) 38 PATH_EXPR@90..98
39 PATH@[90; 98) 39 PATH@90..98
40 PATH_SEGMENT@[90; 98) 40 PATH_SEGMENT@90..98
41 NAME_REF@[90; 98) 41 NAME_REF@90..98
42 IDENT@[90; 98) "do_thing" 42 IDENT@90..98 "do_thing"
43 ARG_LIST@[98; 100) 43 ARG_LIST@98..100
44 L_PAREN@[98; 99) "(" 44 L_PAREN@98..99 "("
45 R_PAREN@[99; 100) ")" 45 R_PAREN@99..100 ")"
46 SEMICOLON@[100; 101) ";" 46 SEMICOLON@100..101 ";"
47 WHITESPACE@[101; 110) "\n " 47 WHITESPACE@101..110 "\n "
48 EXPR_STMT@[110; 170) 48 EXPR_STMT@110..170
49 IF_EXPR@[110; 170) 49 IF_EXPR@110..170
50 IF_KW@[110; 112) "if" 50 IF_KW@110..112 "if"
51 WHITESPACE@[112; 113) " " 51 WHITESPACE@112..113 " "
52 CONDITION@[113; 132) 52 CONDITION@113..132
53 CALL_EXPR@[113; 132) 53 CALL_EXPR@113..132
54 PATH_EXPR@[113; 130) 54 PATH_EXPR@113..130
55 PATH@[113; 130) 55 PATH@113..130
56 PATH_SEGMENT@[113; 130) 56 PATH_SEGMENT@113..130
57 NAME_REF@[113; 130) 57 NAME_REF@113..130
58 IDENT@[113; 130) "condition_not_met" 58 IDENT@113..130 "condition_not_met"
59 ARG_LIST@[130; 132) 59 ARG_LIST@130..132
60 L_PAREN@[130; 131) "(" 60 L_PAREN@130..131 "("
61 R_PAREN@[131; 132) ")" 61 R_PAREN@131..132 ")"
62 WHITESPACE@[132; 133) " " 62 WHITESPACE@132..133 " "
63 BLOCK_EXPR@[133; 170) 63 BLOCK_EXPR@133..170
64 BLOCK@[133; 170) 64 BLOCK@133..170
65 L_CURLY@[133; 134) "{" 65 L_CURLY@133..134 "{"
66 WHITESPACE@[134; 147) "\n " 66 WHITESPACE@134..147 "\n "
67 EXPR_STMT@[147; 160) 67 EXPR_STMT@147..160
68 BREAK_EXPR@[147; 159) 68 BREAK_EXPR@147..159
69 BREAK_KW@[147; 152) "break" 69 BREAK_KW@147..152 "break"
70 WHITESPACE@[152; 153) " " 70 WHITESPACE@152..153 " "
71 LIFETIME@[153; 159) "\'block" 71 LIFETIME@153..159 "\'block"
72 SEMICOLON@[159; 160) ";" 72 SEMICOLON@159..160 ";"
73 WHITESPACE@[160; 169) "\n " 73 WHITESPACE@160..169 "\n "
74 R_CURLY@[169; 170) "}" 74 R_CURLY@169..170 "}"
75 WHITESPACE@[170; 179) "\n " 75 WHITESPACE@170..179 "\n "
76 EXPR_STMT@[179; 195) 76 EXPR_STMT@179..195
77 CALL_EXPR@[179; 194) 77 CALL_EXPR@179..194
78 PATH_EXPR@[179; 192) 78 PATH_EXPR@179..192
79 PATH@[179; 192) 79 PATH@179..192
80 PATH_SEGMENT@[179; 192) 80 PATH_SEGMENT@179..192
81 NAME_REF@[179; 192) 81 NAME_REF@179..192
82 IDENT@[179; 192) "do_next_thing" 82 IDENT@179..192 "do_next_thing"
83 ARG_LIST@[192; 194) 83 ARG_LIST@192..194
84 L_PAREN@[192; 193) "(" 84 L_PAREN@192..193 "("
85 R_PAREN@[193; 194) ")" 85 R_PAREN@193..194 ")"
86 SEMICOLON@[194; 195) ";" 86 SEMICOLON@194..195 ";"
87 WHITESPACE@[195; 204) "\n " 87 WHITESPACE@195..204 "\n "
88 EXPR_STMT@[204; 264) 88 EXPR_STMT@204..264
89 IF_EXPR@[204; 264) 89 IF_EXPR@204..264
90 IF_KW@[204; 206) "if" 90 IF_KW@204..206 "if"
91 WHITESPACE@[206; 207) " " 91 WHITESPACE@206..207 " "
92 CONDITION@[207; 226) 92 CONDITION@207..226
93 CALL_EXPR@[207; 226) 93 CALL_EXPR@207..226
94 PATH_EXPR@[207; 224) 94 PATH_EXPR@207..224
95 PATH@[207; 224) 95 PATH@207..224
96 PATH_SEGMENT@[207; 224) 96 PATH_SEGMENT@207..224
97 NAME_REF@[207; 224) 97 NAME_REF@207..224
98 IDENT@[207; 224) "condition_not_met" 98 IDENT@207..224 "condition_not_met"
99 ARG_LIST@[224; 226) 99 ARG_LIST@224..226
100 L_PAREN@[224; 225) "(" 100 L_PAREN@224..225 "("
101 R_PAREN@[225; 226) ")" 101 R_PAREN@225..226 ")"
102 WHITESPACE@[226; 227) " " 102 WHITESPACE@226..227 " "
103 BLOCK_EXPR@[227; 264) 103 BLOCK_EXPR@227..264
104 BLOCK@[227; 264) 104 BLOCK@227..264
105 L_CURLY@[227; 228) "{" 105 L_CURLY@227..228 "{"
106 WHITESPACE@[228; 241) "\n " 106 WHITESPACE@228..241 "\n "
107 EXPR_STMT@[241; 254) 107 EXPR_STMT@241..254
108 BREAK_EXPR@[241; 253) 108 BREAK_EXPR@241..253
109 BREAK_KW@[241; 246) "break" 109 BREAK_KW@241..246 "break"
110 WHITESPACE@[246; 247) " " 110 WHITESPACE@246..247 " "
111 LIFETIME@[247; 253) "\'block" 111 LIFETIME@247..253 "\'block"
112 SEMICOLON@[253; 254) ";" 112 SEMICOLON@253..254 ";"
113 WHITESPACE@[254; 263) "\n " 113 WHITESPACE@254..263 "\n "
114 R_CURLY@[263; 264) "}" 114 R_CURLY@263..264 "}"
115 WHITESPACE@[264; 273) "\n " 115 WHITESPACE@264..273 "\n "
116 EXPR_STMT@[273; 289) 116 EXPR_STMT@273..289
117 CALL_EXPR@[273; 288) 117 CALL_EXPR@273..288
118 PATH_EXPR@[273; 286) 118 PATH_EXPR@273..286
119 PATH@[273; 286) 119 PATH@273..286
120 PATH_SEGMENT@[273; 286) 120 PATH_SEGMENT@273..286
121 NAME_REF@[273; 286) 121 NAME_REF@273..286
122 IDENT@[273; 286) "do_last_thing" 122 IDENT@273..286 "do_last_thing"
123 ARG_LIST@[286; 288) 123 ARG_LIST@286..288
124 L_PAREN@[286; 287) "(" 124 L_PAREN@286..287 "("
125 R_PAREN@[287; 288) ")" 125 R_PAREN@287..288 ")"
126 SEMICOLON@[288; 289) ";" 126 SEMICOLON@288..289 ";"
127 WHITESPACE@[289; 294) "\n " 127 WHITESPACE@289..294 "\n "
128 R_CURLY@[294; 295) "}" 128 R_CURLY@294..295 "}"
129 WHITESPACE@[295; 301) "\n\n " 129 WHITESPACE@295..301 "\n\n "
130 LET_STMT@[301; 503) 130 LET_STMT@301..503
131 LET_KW@[301; 304) "let" 131 LET_KW@301..304 "let"
132 WHITESPACE@[304; 305) " " 132 WHITESPACE@304..305 " "
133 BIND_PAT@[305; 311) 133 BIND_PAT@305..311
134 NAME@[305; 311) 134 NAME@305..311
135 IDENT@[305; 311) "result" 135 IDENT@305..311 "result"
136 WHITESPACE@[311; 312) " " 136 WHITESPACE@311..312 " "
137 EQ@[312; 313) "=" 137 EQ@312..313 "="
138 WHITESPACE@[313; 314) " " 138 WHITESPACE@313..314 " "
139 BLOCK_EXPR@[314; 502) 139 BLOCK_EXPR@314..502
140 LABEL@[314; 321) 140 LABEL@314..321
141 LIFETIME@[314; 320) "\'block" 141 LIFETIME@314..320 "\'block"
142 COLON@[320; 321) ":" 142 COLON@320..321 ":"
143 WHITESPACE@[321; 322) " " 143 WHITESPACE@321..322 " "
144 BLOCK@[322; 502) 144 BLOCK@322..502
145 L_CURLY@[322; 323) "{" 145 L_CURLY@322..323 "{"
146 WHITESPACE@[323; 332) "\n " 146 WHITESPACE@323..332 "\n "
147 EXPR_STMT@[332; 403) 147 EXPR_STMT@332..403
148 IF_EXPR@[332; 403) 148 IF_EXPR@332..403
149 IF_KW@[332; 334) "if" 149 IF_KW@332..334 "if"
150 WHITESPACE@[334; 335) " " 150 WHITESPACE@334..335 " "
151 CONDITION@[335; 340) 151 CONDITION@335..340
152 CALL_EXPR@[335; 340) 152 CALL_EXPR@335..340
153 PATH_EXPR@[335; 338) 153 PATH_EXPR@335..338
154 PATH@[335; 338) 154 PATH@335..338
155 PATH_SEGMENT@[335; 338) 155 PATH_SEGMENT@335..338
156 NAME_REF@[335; 338) 156 NAME_REF@335..338
157 IDENT@[335; 338) "foo" 157 IDENT@335..338 "foo"
158 ARG_LIST@[338; 340) 158 ARG_LIST@338..340
159 L_PAREN@[338; 339) "(" 159 L_PAREN@338..339 "("
160 R_PAREN@[339; 340) ")" 160 R_PAREN@339..340 ")"
161 WHITESPACE@[340; 341) " " 161 WHITESPACE@340..341 " "
162 BLOCK_EXPR@[341; 403) 162 BLOCK_EXPR@341..403
163 BLOCK@[341; 403) 163 BLOCK@341..403
164 L_CURLY@[341; 342) "{" 164 L_CURLY@341..342 "{"
165 WHITESPACE@[342; 355) "\n " 165 WHITESPACE@342..355 "\n "
166 COMMENT@[355; 365) "// comment" 166 COMMENT@355..365 "// comment"
167 WHITESPACE@[365; 378) "\n " 167 WHITESPACE@365..378 "\n "
168 EXPR_STMT@[378; 393) 168 EXPR_STMT@378..393
169 BREAK_EXPR@[378; 392) 169 BREAK_EXPR@378..392
170 BREAK_KW@[378; 383) "break" 170 BREAK_KW@378..383 "break"
171 WHITESPACE@[383; 384) " " 171 WHITESPACE@383..384 " "
172 LIFETIME@[384; 390) "\'block" 172 LIFETIME@384..390 "\'block"
173 WHITESPACE@[390; 391) " " 173 WHITESPACE@390..391 " "
174 LITERAL@[391; 392) 174 LITERAL@391..392
175 INT_NUMBER@[391; 392) "1" 175 INT_NUMBER@391..392 "1"
176 SEMICOLON@[392; 393) ";" 176 SEMICOLON@392..393 ";"
177 WHITESPACE@[393; 402) "\n " 177 WHITESPACE@393..402 "\n "
178 R_CURLY@[402; 403) "}" 178 R_CURLY@402..403 "}"
179 WHITESPACE@[403; 412) "\n " 179 WHITESPACE@403..412 "\n "
180 EXPR_STMT@[412; 486) 180 EXPR_STMT@412..486
181 IF_EXPR@[412; 486) 181 IF_EXPR@412..486
182 IF_KW@[412; 414) "if" 182 IF_KW@412..414 "if"
183 WHITESPACE@[414; 415) " " 183 WHITESPACE@414..415 " "
184 CONDITION@[415; 420) 184 CONDITION@415..420
185 CALL_EXPR@[415; 420) 185 CALL_EXPR@415..420
186 PATH_EXPR@[415; 418) 186 PATH_EXPR@415..418
187 PATH@[415; 418) 187 PATH@415..418
188 PATH_SEGMENT@[415; 418) 188 PATH_SEGMENT@415..418
189 NAME_REF@[415; 418) 189 NAME_REF@415..418
190 IDENT@[415; 418) "bar" 190 IDENT@415..418 "bar"
191 ARG_LIST@[418; 420) 191 ARG_LIST@418..420
192 L_PAREN@[418; 419) "(" 192 L_PAREN@418..419 "("
193 R_PAREN@[419; 420) ")" 193 R_PAREN@419..420 ")"
194 WHITESPACE@[420; 421) " " 194 WHITESPACE@420..421 " "
195 BLOCK_EXPR@[421; 486) 195 BLOCK_EXPR@421..486
196 BLOCK@[421; 486) 196 BLOCK@421..486
197 L_CURLY@[421; 422) "{" 197 L_CURLY@421..422 "{"
198 WHITESPACE@[422; 435) "\n " 198 WHITESPACE@422..435 "\n "
199 COMMENT@[435; 448) "/* comment */" 199 COMMENT@435..448 "/* comment */"
200 WHITESPACE@[448; 461) "\n " 200 WHITESPACE@448..461 "\n "
201 EXPR_STMT@[461; 476) 201 EXPR_STMT@461..476
202 BREAK_EXPR@[461; 475) 202 BREAK_EXPR@461..475
203 BREAK_KW@[461; 466) "break" 203 BREAK_KW@461..466 "break"
204 WHITESPACE@[466; 467) " " 204 WHITESPACE@466..467 " "
205 LIFETIME@[467; 473) "\'block" 205 LIFETIME@467..473 "\'block"
206 WHITESPACE@[473; 474) " " 206 WHITESPACE@473..474 " "
207 LITERAL@[474; 475) 207 LITERAL@474..475
208 INT_NUMBER@[474; 475) "2" 208 INT_NUMBER@474..475 "2"
209 SEMICOLON@[475; 476) ";" 209 SEMICOLON@475..476 ";"
210 WHITESPACE@[476; 485) "\n " 210 WHITESPACE@476..485 "\n "
211 R_CURLY@[485; 486) "}" 211 R_CURLY@485..486 "}"
212 WHITESPACE@[486; 495) "\n " 212 WHITESPACE@486..495 "\n "
213 LITERAL@[495; 496) 213 LITERAL@495..496
214 INT_NUMBER@[495; 496) "3" 214 INT_NUMBER@495..496 "3"
215 WHITESPACE@[496; 501) "\n " 215 WHITESPACE@496..501 "\n "
216 R_CURLY@[501; 502) "}" 216 R_CURLY@501..502 "}"
217 SEMICOLON@[502; 503) ";" 217 SEMICOLON@502..503 ";"
218 WHITESPACE@[503; 504) "\n" 218 WHITESPACE@503..504 "\n"
219 R_CURLY@[504; 505) "}" 219 R_CURLY@504..505 "}"
220 WHITESPACE@[505; 506) "\n" 220 WHITESPACE@505..506 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.rast b/crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.rast
index beaa96388..3b9e8c71c 100644
--- a/crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.rast
@@ -1,42 +1,42 @@
1SOURCE_FILE@[0; 62) 1SOURCE_FILE@0..62
2 FN_DEF@[0; 61) 2 FN_DEF@0..61
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 61) 11 BLOCK_EXPR@10..61
12 BLOCK@[10; 61) 12 BLOCK@10..61
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 EXPR_STMT@[16; 59) 15 EXPR_STMT@16..59
16 CALL_EXPR@[16; 58) 16 CALL_EXPR@16..58
17 PATH_EXPR@[16; 26) 17 PATH_EXPR@16..26
18 PATH@[16; 26) 18 PATH@16..26
19 PATH_SEGMENT@[16; 26) 19 PATH_SEGMENT@16..26
20 NAME_REF@[16; 26) 20 NAME_REF@16..26
21 IDENT@[16; 26) "make_query" 21 IDENT@16..26 "make_query"
22 ARG_LIST@[26; 58) 22 ARG_LIST@26..58
23 L_PAREN@[26; 27) "(" 23 L_PAREN@26..27 "("
24 PATH_EXPR@[27; 57) 24 PATH_EXPR@27..57
25 PATH@[27; 57) 25 PATH@27..57
26 PATH@[27; 44) 26 PATH@27..44
27 PATH@[27; 32) 27 PATH@27..32
28 PATH_SEGMENT@[27; 32) 28 PATH_SEGMENT@27..32
29 CRATE_KW@[27; 32) "crate" 29 CRATE_KW@27..32 "crate"
30 COLON2@[32; 34) "::" 30 COLON2@32..34 "::"
31 PATH_SEGMENT@[34; 44) 31 PATH_SEGMENT@34..44
32 NAME_REF@[34; 44) 32 NAME_REF@34..44
33 IDENT@[34; 44) "module_map" 33 IDENT@34..44 "module_map"
34 COLON2@[44; 46) "::" 34 COLON2@44..46 "::"
35 PATH_SEGMENT@[46; 57) 35 PATH_SEGMENT@46..57
36 NAME_REF@[46; 57) 36 NAME_REF@46..57
37 IDENT@[46; 57) "module_tree" 37 IDENT@46..57 "module_tree"
38 R_PAREN@[57; 58) ")" 38 R_PAREN@57..58 ")"
39 SEMICOLON@[58; 59) ";" 39 SEMICOLON@58..59 ";"
40 WHITESPACE@[59; 60) "\n" 40 WHITESPACE@59..60 "\n"
41 R_CURLY@[60; 61) "}" 41 R_CURLY@60..61 "}"
42 WHITESPACE@[61; 62) "\n" 42 WHITESPACE@61..62 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.rast b/crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.rast
index 7143a31a5..9af689635 100644
--- a/crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.rast
@@ -1,2329 +1,2329 @@
1SOURCE_FILE@[0; 3813) 1SOURCE_FILE@0..3813
2 COMMENT@[0; 55) "//! Adapted from a `r ..." 2 COMMENT@0..55 "//! Adapted from a `r ..."
3 WHITESPACE@[55; 56) "\n" 3 WHITESPACE@55..56 "\n"
4 COMMENT@[56; 173) "//! https://github.co ..." 4 COMMENT@56..173 "//! https://github.co ..."
5 WHITESPACE@[173; 174) "\n" 5 WHITESPACE@173..174 "\n"
6 COMMENT@[174; 178) "//! " 6 COMMENT@174..178 "//! "
7 WHITESPACE@[178; 179) "\n" 7 WHITESPACE@178..179 "\n"
8 COMMENT@[179; 269) "//! Reported to rust- ..." 8 COMMENT@179..269 "//! Reported to rust- ..."
9 WHITESPACE@[269; 271) "\n\n" 9 WHITESPACE@269..271 "\n\n"
10 ATTR@[271; 302) 10 ATTR@271..302
11 POUND@[271; 272) "#" 11 POUND@271..272 "#"
12 BANG@[272; 273) "!" 12 BANG@272..273 "!"
13 L_BRACK@[273; 274) "[" 13 L_BRACK@273..274 "["
14 PATH@[274; 279) 14 PATH@274..279
15 PATH_SEGMENT@[274; 279) 15 PATH_SEGMENT@274..279
16 NAME_REF@[274; 279) 16 NAME_REF@274..279
17 IDENT@[274; 279) "allow" 17 IDENT@274..279 "allow"
18 TOKEN_TREE@[279; 301) 18 TOKEN_TREE@279..301
19 L_PAREN@[279; 280) "(" 19 L_PAREN@279..280 "("
20 IDENT@[280; 300) "non_camel_case_types" 20 IDENT@280..300 "non_camel_case_types"
21 R_PAREN@[300; 301) ")" 21 R_PAREN@300..301 ")"
22 R_BRACK@[301; 302) "]" 22 R_BRACK@301..302 "]"
23 WHITESPACE@[302; 303) "\n" 23 WHITESPACE@302..303 "\n"
24 ATTR@[303; 323) 24 ATTR@303..323
25 POUND@[303; 304) "#" 25 POUND@303..304 "#"
26 BANG@[304; 305) "!" 26 BANG@304..305 "!"
27 L_BRACK@[305; 306) "[" 27 L_BRACK@305..306 "["
28 PATH@[306; 311) 28 PATH@306..311
29 PATH_SEGMENT@[306; 311) 29 PATH_SEGMENT@306..311
30 NAME_REF@[306; 311) 30 NAME_REF@306..311
31 IDENT@[306; 311) "allow" 31 IDENT@306..311 "allow"
32 TOKEN_TREE@[311; 322) 32 TOKEN_TREE@311..322
33 L_PAREN@[311; 312) "(" 33 L_PAREN@311..312 "("
34 IDENT@[312; 321) "dead_code" 34 IDENT@312..321 "dead_code"
35 R_PAREN@[321; 322) ")" 35 R_PAREN@321..322 ")"
36 R_BRACK@[322; 323) "]" 36 R_BRACK@322..323 "]"
37 WHITESPACE@[323; 324) "\n" 37 WHITESPACE@323..324 "\n"
38 ATTR@[324; 351) 38 ATTR@324..351
39 POUND@[324; 325) "#" 39 POUND@324..325 "#"
40 BANG@[325; 326) "!" 40 BANG@325..326 "!"
41 L_BRACK@[326; 327) "[" 41 L_BRACK@326..327 "["
42 PATH@[327; 332) 42 PATH@327..332
43 PATH_SEGMENT@[327; 332) 43 PATH_SEGMENT@327..332
44 NAME_REF@[327; 332) 44 NAME_REF@327..332
45 IDENT@[327; 332) "allow" 45 IDENT@327..332 "allow"
46 TOKEN_TREE@[332; 350) 46 TOKEN_TREE@332..350
47 L_PAREN@[332; 333) "(" 47 L_PAREN@332..333 "("
48 IDENT@[333; 349) "unreachable_code" 48 IDENT@333..349 "unreachable_code"
49 R_PAREN@[349; 350) ")" 49 R_PAREN@349..350 ")"
50 R_BRACK@[350; 351) "]" 50 R_BRACK@350..351 "]"
51 WHITESPACE@[351; 352) "\n" 51 WHITESPACE@351..352 "\n"
52 ATTR@[352; 376) 52 ATTR@352..376
53 POUND@[352; 353) "#" 53 POUND@352..353 "#"
54 BANG@[353; 354) "!" 54 BANG@353..354 "!"
55 L_BRACK@[354; 355) "[" 55 L_BRACK@354..355 "["
56 PATH@[355; 360) 56 PATH@355..360
57 PATH_SEGMENT@[355; 360) 57 PATH_SEGMENT@355..360
58 NAME_REF@[355; 360) 58 NAME_REF@355..360
59 IDENT@[355; 360) "allow" 59 IDENT@355..360 "allow"
60 TOKEN_TREE@[360; 375) 60 TOKEN_TREE@360..375
61 L_PAREN@[360; 361) "(" 61 L_PAREN@360..361 "("
62 IDENT@[361; 374) "unused_parens" 62 IDENT@361..374 "unused_parens"
63 R_PAREN@[374; 375) ")" 63 R_PAREN@374..375 ")"
64 R_BRACK@[375; 376) "]" 64 R_BRACK@375..376 "]"
65 WHITESPACE@[376; 378) "\n\n" 65 WHITESPACE@376..378 "\n\n"
66 ATTR@[378; 405) 66 ATTR@378..405
67 POUND@[378; 379) "#" 67 POUND@378..379 "#"
68 BANG@[379; 380) "!" 68 BANG@379..380 "!"
69 L_BRACK@[380; 381) "[" 69 L_BRACK@380..381 "["
70 PATH@[381; 396) 70 PATH@381..396
71 PATH_SEGMENT@[381; 396) 71 PATH_SEGMENT@381..396
72 NAME_REF@[381; 396) 72 NAME_REF@381..396
73 IDENT@[381; 396) "recursion_limit" 73 IDENT@381..396 "recursion_limit"
74 WHITESPACE@[396; 397) " " 74 WHITESPACE@396..397 " "
75 EQ@[397; 398) "=" 75 EQ@397..398 "="
76 WHITESPACE@[398; 399) " " 76 WHITESPACE@398..399 " "
77 LITERAL@[399; 404) 77 LITERAL@399..404
78 STRING@[399; 404) "\"128\"" 78 STRING@399..404 "\"128\""
79 R_BRACK@[404; 405) "]" 79 R_BRACK@404..405 "]"
80 WHITESPACE@[405; 407) "\n\n" 80 WHITESPACE@405..407 "\n\n"
81 USE_ITEM@[407; 427) 81 USE_ITEM@407..427
82 USE_KW@[407; 410) "use" 82 USE_KW@407..410 "use"
83 WHITESPACE@[410; 411) " " 83 WHITESPACE@410..411 " "
84 USE_TREE@[411; 426) 84 USE_TREE@411..426
85 PATH@[411; 426) 85 PATH@411..426
86 PATH@[411; 420) 86 PATH@411..420
87 PATH@[411; 414) 87 PATH@411..414
88 PATH_SEGMENT@[411; 414) 88 PATH_SEGMENT@411..414
89 NAME_REF@[411; 414) 89 NAME_REF@411..414
90 IDENT@[411; 414) "std" 90 IDENT@411..414 "std"
91 COLON2@[414; 416) "::" 91 COLON2@414..416 "::"
92 PATH_SEGMENT@[416; 420) 92 PATH_SEGMENT@416..420
93 NAME_REF@[416; 420) 93 NAME_REF@416..420
94 IDENT@[416; 420) "cell" 94 IDENT@416..420 "cell"
95 COLON2@[420; 422) "::" 95 COLON2@420..422 "::"
96 PATH_SEGMENT@[422; 426) 96 PATH_SEGMENT@422..426
97 NAME_REF@[422; 426) 97 NAME_REF@422..426
98 IDENT@[422; 426) "Cell" 98 IDENT@422..426 "Cell"
99 SEMICOLON@[426; 427) ";" 99 SEMICOLON@426..427 ";"
100 WHITESPACE@[427; 428) "\n" 100 WHITESPACE@427..428 "\n"
101 USE_ITEM@[428; 447) 101 USE_ITEM@428..447
102 USE_KW@[428; 431) "use" 102 USE_KW@428..431 "use"
103 WHITESPACE@[431; 432) " " 103 WHITESPACE@431..432 " "
104 USE_TREE@[432; 446) 104 USE_TREE@432..446
105 PATH@[432; 446) 105 PATH@432..446
106 PATH@[432; 440) 106 PATH@432..440
107 PATH@[432; 435) 107 PATH@432..435
108 PATH_SEGMENT@[432; 435) 108 PATH_SEGMENT@432..435
109 NAME_REF@[432; 435) 109 NAME_REF@432..435
110 IDENT@[432; 435) "std" 110 IDENT@432..435 "std"
111 COLON2@[435; 437) "::" 111 COLON2@435..437 "::"
112 PATH_SEGMENT@[437; 440) 112 PATH_SEGMENT@437..440
113 NAME_REF@[437; 440) 113 NAME_REF@437..440
114 IDENT@[437; 440) "mem" 114 IDENT@437..440 "mem"
115 COLON2@[440; 442) "::" 115 COLON2@440..442 "::"
116 PATH_SEGMENT@[442; 446) 116 PATH_SEGMENT@442..446
117 NAME_REF@[442; 446) 117 NAME_REF@442..446
118 IDENT@[442; 446) "swap" 118 IDENT@442..446 "swap"
119 SEMICOLON@[446; 447) ";" 119 SEMICOLON@446..447 ";"
120 WHITESPACE@[447; 449) "\n\n" 120 WHITESPACE@447..449 "\n\n"
121 COMMENT@[449; 518) "// Just a grab bag of ..." 121 COMMENT@449..518 "// Just a grab bag of ..."
122 WHITESPACE@[518; 520) "\n\n" 122 WHITESPACE@518..520 "\n\n"
123 FN_DEF@[520; 572) 123 FN_DEF@520..572
124 FN_KW@[520; 522) "fn" 124 FN_KW@520..522 "fn"
125 WHITESPACE@[522; 523) " " 125 WHITESPACE@522..523 " "
126 NAME@[523; 530) 126 NAME@523..530
127 IDENT@[523; 530) "strange" 127 IDENT@523..530 "strange"
128 PARAM_LIST@[530; 532) 128 PARAM_LIST@530..532
129 L_PAREN@[530; 531) "(" 129 L_PAREN@530..531 "("
130 R_PAREN@[531; 532) ")" 130 R_PAREN@531..532 ")"
131 WHITESPACE@[532; 533) " " 131 WHITESPACE@532..533 " "
132 RET_TYPE@[533; 540) 132 RET_TYPE@533..540
133 THIN_ARROW@[533; 535) "->" 133 THIN_ARROW@533..535 "->"
134 WHITESPACE@[535; 536) " " 134 WHITESPACE@535..536 " "
135 PATH_TYPE@[536; 540) 135 PATH_TYPE@536..540
136 PATH@[536; 540) 136 PATH@536..540
137 PATH_SEGMENT@[536; 540) 137 PATH_SEGMENT@536..540
138 NAME_REF@[536; 540) 138 NAME_REF@536..540
139 IDENT@[536; 540) "bool" 139 IDENT@536..540 "bool"
140 WHITESPACE@[540; 541) " " 140 WHITESPACE@540..541 " "
141 BLOCK_EXPR@[541; 572) 141 BLOCK_EXPR@541..572
142 BLOCK@[541; 572) 142 BLOCK@541..572
143 L_CURLY@[541; 542) "{" 143 L_CURLY@541..542 "{"
144 WHITESPACE@[542; 543) " " 144 WHITESPACE@542..543 " "
145 LET_STMT@[543; 570) 145 LET_STMT@543..570
146 LET_KW@[543; 546) "let" 146 LET_KW@543..546 "let"
147 WHITESPACE@[546; 547) " " 147 WHITESPACE@546..547 " "
148 BIND_PAT@[547; 549) 148 BIND_PAT@547..549
149 NAME@[547; 549) 149 NAME@547..549
150 IDENT@[547; 549) "_x" 150 IDENT@547..549 "_x"
151 COLON@[549; 550) ":" 151 COLON@549..550 ":"
152 WHITESPACE@[550; 551) " " 152 WHITESPACE@550..551 " "
153 PATH_TYPE@[551; 555) 153 PATH_TYPE@551..555
154 PATH@[551; 555) 154 PATH@551..555
155 PATH_SEGMENT@[551; 555) 155 PATH_SEGMENT@551..555
156 NAME_REF@[551; 555) 156 NAME_REF@551..555
157 IDENT@[551; 555) "bool" 157 IDENT@551..555 "bool"
158 WHITESPACE@[555; 556) " " 158 WHITESPACE@555..556 " "
159 EQ@[556; 557) "=" 159 EQ@556..557 "="
160 WHITESPACE@[557; 558) " " 160 WHITESPACE@557..558 " "
161 RETURN_EXPR@[558; 569) 161 RETURN_EXPR@558..569
162 RETURN_KW@[558; 564) "return" 162 RETURN_KW@558..564 "return"
163 WHITESPACE@[564; 565) " " 163 WHITESPACE@564..565 " "
164 LITERAL@[565; 569) 164 LITERAL@565..569
165 TRUE_KW@[565; 569) "true" 165 TRUE_KW@565..569 "true"
166 SEMICOLON@[569; 570) ";" 166 SEMICOLON@569..570 ";"
167 WHITESPACE@[570; 571) " " 167 WHITESPACE@570..571 " "
168 R_CURLY@[571; 572) "}" 168 R_CURLY@571..572 "}"
169 WHITESPACE@[572; 574) "\n\n" 169 WHITESPACE@572..574 "\n\n"
170 FN_DEF@[574; 624) 170 FN_DEF@574..624
171 FN_KW@[574; 576) "fn" 171 FN_KW@574..576 "fn"
172 WHITESPACE@[576; 577) " " 172 WHITESPACE@576..577 " "
173 NAME@[577; 582) 173 NAME@577..582
174 IDENT@[577; 582) "funny" 174 IDENT@577..582 "funny"
175 PARAM_LIST@[582; 584) 175 PARAM_LIST@582..584
176 L_PAREN@[582; 583) "(" 176 L_PAREN@582..583 "("
177 R_PAREN@[583; 584) ")" 177 R_PAREN@583..584 ")"
178 WHITESPACE@[584; 585) " " 178 WHITESPACE@584..585 " "
179 BLOCK_EXPR@[585; 624) 179 BLOCK_EXPR@585..624
180 BLOCK@[585; 624) 180 BLOCK@585..624
181 L_CURLY@[585; 586) "{" 181 L_CURLY@585..586 "{"
182 WHITESPACE@[586; 591) "\n " 182 WHITESPACE@586..591 "\n "
183 FN_DEF@[591; 607) 183 FN_DEF@591..607
184 FN_KW@[591; 593) "fn" 184 FN_KW@591..593 "fn"
185 WHITESPACE@[593; 594) " " 185 WHITESPACE@593..594 " "
186 NAME@[594; 595) 186 NAME@594..595
187 IDENT@[594; 595) "f" 187 IDENT@594..595 "f"
188 PARAM_LIST@[595; 603) 188 PARAM_LIST@595..603
189 L_PAREN@[595; 596) "(" 189 L_PAREN@595..596 "("
190 PARAM@[596; 602) 190 PARAM@596..602
191 BIND_PAT@[596; 598) 191 BIND_PAT@596..598
192 NAME@[596; 598) 192 NAME@596..598
193 IDENT@[596; 598) "_x" 193 IDENT@596..598 "_x"
194 COLON@[598; 599) ":" 194 COLON@598..599 ":"
195 WHITESPACE@[599; 600) " " 195 WHITESPACE@599..600 " "
196 TUPLE_TYPE@[600; 602) 196 TUPLE_TYPE@600..602
197 L_PAREN@[600; 601) "(" 197 L_PAREN@600..601 "("
198 R_PAREN@[601; 602) ")" 198 R_PAREN@601..602 ")"
199 R_PAREN@[602; 603) ")" 199 R_PAREN@602..603 ")"
200 WHITESPACE@[603; 604) " " 200 WHITESPACE@603..604 " "
201 BLOCK_EXPR@[604; 607) 201 BLOCK_EXPR@604..607
202 BLOCK@[604; 607) 202 BLOCK@604..607
203 L_CURLY@[604; 605) "{" 203 L_CURLY@604..605 "{"
204 WHITESPACE@[605; 606) " " 204 WHITESPACE@605..606 " "
205 R_CURLY@[606; 607) "}" 205 R_CURLY@606..607 "}"
206 WHITESPACE@[607; 612) "\n " 206 WHITESPACE@607..612 "\n "
207 EXPR_STMT@[612; 622) 207 EXPR_STMT@612..622
208 CALL_EXPR@[612; 621) 208 CALL_EXPR@612..621
209 PATH_EXPR@[612; 613) 209 PATH_EXPR@612..613
210 PATH@[612; 613) 210 PATH@612..613
211 PATH_SEGMENT@[612; 613) 211 PATH_SEGMENT@612..613
212 NAME_REF@[612; 613) 212 NAME_REF@612..613
213 IDENT@[612; 613) "f" 213 IDENT@612..613 "f"
214 ARG_LIST@[613; 621) 214 ARG_LIST@613..621
215 L_PAREN@[613; 614) "(" 215 L_PAREN@613..614 "("
216 RETURN_EXPR@[614; 620) 216 RETURN_EXPR@614..620
217 RETURN_KW@[614; 620) "return" 217 RETURN_KW@614..620 "return"
218 R_PAREN@[620; 621) ")" 218 R_PAREN@620..621 ")"
219 SEMICOLON@[621; 622) ";" 219 SEMICOLON@621..622 ";"
220 WHITESPACE@[622; 623) "\n" 220 WHITESPACE@622..623 "\n"
221 R_CURLY@[623; 624) "}" 221 R_CURLY@623..624 "}"
222 WHITESPACE@[624; 626) "\n\n" 222 WHITESPACE@624..626 "\n\n"
223 FN_DEF@[626; 816) 223 FN_DEF@626..816
224 FN_KW@[626; 628) "fn" 224 FN_KW@626..628 "fn"
225 WHITESPACE@[628; 629) " " 225 WHITESPACE@628..629 " "
226 NAME@[629; 633) 226 NAME@629..633
227 IDENT@[629; 633) "what" 227 IDENT@629..633 "what"
228 PARAM_LIST@[633; 635) 228 PARAM_LIST@633..635
229 L_PAREN@[633; 634) "(" 229 L_PAREN@633..634 "("
230 R_PAREN@[634; 635) ")" 230 R_PAREN@634..635 ")"
231 WHITESPACE@[635; 636) " " 231 WHITESPACE@635..636 " "
232 BLOCK_EXPR@[636; 816) 232 BLOCK_EXPR@636..816
233 BLOCK@[636; 816) 233 BLOCK@636..816
234 L_CURLY@[636; 637) "{" 234 L_CURLY@636..637 "{"
235 WHITESPACE@[637; 642) "\n " 235 WHITESPACE@637..642 "\n "
236 FN_DEF@[642; 720) 236 FN_DEF@642..720
237 FN_KW@[642; 644) "fn" 237 FN_KW@642..644 "fn"
238 WHITESPACE@[644; 645) " " 238 WHITESPACE@644..645 " "
239 NAME@[645; 648) 239 NAME@645..648
240 IDENT@[645; 648) "the" 240 IDENT@645..648 "the"
241 PARAM_LIST@[648; 664) 241 PARAM_LIST@648..664
242 L_PAREN@[648; 649) "(" 242 L_PAREN@648..649 "("
243 PARAM@[649; 663) 243 PARAM@649..663
244 BIND_PAT@[649; 650) 244 BIND_PAT@649..650
245 NAME@[649; 650) 245 NAME@649..650
246 IDENT@[649; 650) "x" 246 IDENT@649..650 "x"
247 COLON@[650; 651) ":" 247 COLON@650..651 ":"
248 WHITESPACE@[651; 652) " " 248 WHITESPACE@651..652 " "
249 REFERENCE_TYPE@[652; 663) 249 REFERENCE_TYPE@652..663
250 AMP@[652; 653) "&" 250 AMP@652..653 "&"
251 PATH_TYPE@[653; 663) 251 PATH_TYPE@653..663
252 PATH@[653; 663) 252 PATH@653..663
253 PATH_SEGMENT@[653; 663) 253 PATH_SEGMENT@653..663
254 NAME_REF@[653; 657) 254 NAME_REF@653..657
255 IDENT@[653; 657) "Cell" 255 IDENT@653..657 "Cell"
256 TYPE_ARG_LIST@[657; 663) 256 TYPE_ARG_LIST@657..663
257 L_ANGLE@[657; 658) "<" 257 L_ANGLE@657..658 "<"
258 TYPE_ARG@[658; 662) 258 TYPE_ARG@658..662
259 PATH_TYPE@[658; 662) 259 PATH_TYPE@658..662
260 PATH@[658; 662) 260 PATH@658..662
261 PATH_SEGMENT@[658; 662) 261 PATH_SEGMENT@658..662
262 NAME_REF@[658; 662) 262 NAME_REF@658..662
263 IDENT@[658; 662) "bool" 263 IDENT@658..662 "bool"
264 R_ANGLE@[662; 663) ">" 264 R_ANGLE@662..663 ">"
265 R_PAREN@[663; 664) ")" 265 R_PAREN@663..664 ")"
266 WHITESPACE@[664; 665) " " 266 WHITESPACE@664..665 " "
267 BLOCK_EXPR@[665; 720) 267 BLOCK_EXPR@665..720
268 BLOCK@[665; 720) 268 BLOCK@665..720
269 L_CURLY@[665; 666) "{" 269 L_CURLY@665..666 "{"
270 WHITESPACE@[666; 675) "\n " 270 WHITESPACE@666..675 "\n "
271 EXPR_STMT@[675; 714) 271 EXPR_STMT@675..714
272 RETURN_EXPR@[675; 713) 272 RETURN_EXPR@675..713
273 RETURN_KW@[675; 681) "return" 273 RETURN_KW@675..681 "return"
274 WHITESPACE@[681; 682) " " 274 WHITESPACE@681..682 " "
275 WHILE_EXPR@[682; 713) 275 WHILE_EXPR@682..713
276 WHILE_KW@[682; 687) "while" 276 WHILE_KW@682..687 "while"
277 WHITESPACE@[687; 688) " " 277 WHITESPACE@687..688 " "
278 CONDITION@[688; 696) 278 CONDITION@688..696
279 PREFIX_EXPR@[688; 696) 279 PREFIX_EXPR@688..696
280 BANG@[688; 689) "!" 280 BANG@688..689 "!"
281 METHOD_CALL_EXPR@[689; 696) 281 METHOD_CALL_EXPR@689..696
282 PATH_EXPR@[689; 690) 282 PATH_EXPR@689..690
283 PATH@[689; 690) 283 PATH@689..690
284 PATH_SEGMENT@[689; 690) 284 PATH_SEGMENT@689..690
285 NAME_REF@[689; 690) 285 NAME_REF@689..690
286 IDENT@[689; 690) "x" 286 IDENT@689..690 "x"
287 DOT@[690; 691) "." 287 DOT@690..691 "."
288 NAME_REF@[691; 694) 288 NAME_REF@691..694
289 IDENT@[691; 694) "get" 289 IDENT@691..694 "get"
290 ARG_LIST@[694; 696) 290 ARG_LIST@694..696
291 L_PAREN@[694; 695) "(" 291 L_PAREN@694..695 "("
292 R_PAREN@[695; 696) ")" 292 R_PAREN@695..696 ")"
293 WHITESPACE@[696; 697) " " 293 WHITESPACE@696..697 " "
294 BLOCK_EXPR@[697; 713) 294 BLOCK_EXPR@697..713
295 BLOCK@[697; 713) 295 BLOCK@697..713
296 L_CURLY@[697; 698) "{" 296 L_CURLY@697..698 "{"
297 WHITESPACE@[698; 699) " " 297 WHITESPACE@698..699 " "
298 EXPR_STMT@[699; 711) 298 EXPR_STMT@699..711
299 METHOD_CALL_EXPR@[699; 710) 299 METHOD_CALL_EXPR@699..710
300 PATH_EXPR@[699; 700) 300 PATH_EXPR@699..700
301 PATH@[699; 700) 301 PATH@699..700
302 PATH_SEGMENT@[699; 700) 302 PATH_SEGMENT@699..700
303 NAME_REF@[699; 700) 303 NAME_REF@699..700
304 IDENT@[699; 700) "x" 304 IDENT@699..700 "x"
305 DOT@[700; 701) "." 305 DOT@700..701 "."
306 NAME_REF@[701; 704) 306 NAME_REF@701..704
307 IDENT@[701; 704) "set" 307 IDENT@701..704 "set"
308 ARG_LIST@[704; 710) 308 ARG_LIST@704..710
309 L_PAREN@[704; 705) "(" 309 L_PAREN@704..705 "("
310 LITERAL@[705; 709) 310 LITERAL@705..709
311 TRUE_KW@[705; 709) "true" 311 TRUE_KW@705..709 "true"
312 R_PAREN@[709; 710) ")" 312 R_PAREN@709..710 ")"
313 SEMICOLON@[710; 711) ";" 313 SEMICOLON@710..711 ";"
314 WHITESPACE@[711; 712) " " 314 WHITESPACE@711..712 " "
315 R_CURLY@[712; 713) "}" 315 R_CURLY@712..713 "}"
316 SEMICOLON@[713; 714) ";" 316 SEMICOLON@713..714 ";"
317 WHITESPACE@[714; 719) "\n " 317 WHITESPACE@714..719 "\n "
318 R_CURLY@[719; 720) "}" 318 R_CURLY@719..720 "}"
319 WHITESPACE@[720; 725) "\n " 319 WHITESPACE@720..725 "\n "
320 LET_STMT@[725; 751) 320 LET_STMT@725..751
321 LET_KW@[725; 728) "let" 321 LET_KW@725..728 "let"
322 WHITESPACE@[728; 729) " " 322 WHITESPACE@728..729 " "
323 BIND_PAT@[729; 730) 323 BIND_PAT@729..730
324 NAME@[729; 730) 324 NAME@729..730
325 IDENT@[729; 730) "i" 325 IDENT@729..730 "i"
326 WHITESPACE@[730; 731) " " 326 WHITESPACE@730..731 " "
327 EQ@[731; 732) "=" 327 EQ@731..732 "="
328 WHITESPACE@[732; 733) " " 328 WHITESPACE@732..733 " "
329 REF_EXPR@[733; 750) 329 REF_EXPR@733..750
330 AMP@[733; 734) "&" 330 AMP@733..734 "&"
331 CALL_EXPR@[734; 750) 331 CALL_EXPR@734..750
332 PATH_EXPR@[734; 743) 332 PATH_EXPR@734..743
333 PATH@[734; 743) 333 PATH@734..743
334 PATH@[734; 738) 334 PATH@734..738
335 PATH_SEGMENT@[734; 738) 335 PATH_SEGMENT@734..738
336 NAME_REF@[734; 738) 336 NAME_REF@734..738
337 IDENT@[734; 738) "Cell" 337 IDENT@734..738 "Cell"
338 COLON2@[738; 740) "::" 338 COLON2@738..740 "::"
339 PATH_SEGMENT@[740; 743) 339 PATH_SEGMENT@740..743
340 NAME_REF@[740; 743) 340 NAME_REF@740..743
341 IDENT@[740; 743) "new" 341 IDENT@740..743 "new"
342 ARG_LIST@[743; 750) 342 ARG_LIST@743..750
343 L_PAREN@[743; 744) "(" 343 L_PAREN@743..744 "("
344 LITERAL@[744; 749) 344 LITERAL@744..749
345 FALSE_KW@[744; 749) "false" 345 FALSE_KW@744..749 "false"
346 R_PAREN@[749; 750) ")" 346 R_PAREN@749..750 ")"
347 SEMICOLON@[750; 751) ";" 347 SEMICOLON@750..751 ";"
348 WHITESPACE@[751; 756) "\n " 348 WHITESPACE@751..756 "\n "
349 LET_STMT@[756; 778) 349 LET_STMT@756..778
350 LET_KW@[756; 759) "let" 350 LET_KW@756..759 "let"
351 WHITESPACE@[759; 760) " " 351 WHITESPACE@759..760 " "
352 BIND_PAT@[760; 764) 352 BIND_PAT@760..764
353 NAME@[760; 764) 353 NAME@760..764
354 IDENT@[760; 764) "dont" 354 IDENT@760..764 "dont"
355 WHITESPACE@[764; 765) " " 355 WHITESPACE@764..765 " "
356 EQ@[765; 766) "=" 356 EQ@765..766 "="
357 WHITESPACE@[766; 767) " " 357 WHITESPACE@766..767 " "
358 BLOCK_EXPR@[767; 777) 358 BLOCK_EXPR@767..777
359 BLOCK@[767; 777) 359 BLOCK@767..777
360 L_CURLY@[767; 768) "{" 360 L_CURLY@767..768 "{"
361 LAMBDA_EXPR@[768; 776) 361 LAMBDA_EXPR@768..776
362 PARAM_LIST@[768; 770) 362 PARAM_LIST@768..770
363 PIPE@[768; 769) "|" 363 PIPE@768..769 "|"
364 PIPE@[769; 770) "|" 364 PIPE@769..770 "|"
365 CALL_EXPR@[770; 776) 365 CALL_EXPR@770..776
366 PATH_EXPR@[770; 773) 366 PATH_EXPR@770..773
367 PATH@[770; 773) 367 PATH@770..773
368 PATH_SEGMENT@[770; 773) 368 PATH_SEGMENT@770..773
369 NAME_REF@[770; 773) 369 NAME_REF@770..773
370 IDENT@[770; 773) "the" 370 IDENT@770..773 "the"
371 ARG_LIST@[773; 776) 371 ARG_LIST@773..776
372 L_PAREN@[773; 774) "(" 372 L_PAREN@773..774 "("
373 PATH_EXPR@[774; 775) 373 PATH_EXPR@774..775
374 PATH@[774; 775) 374 PATH@774..775
375 PATH_SEGMENT@[774; 775) 375 PATH_SEGMENT@774..775
376 NAME_REF@[774; 775) 376 NAME_REF@774..775
377 IDENT@[774; 775) "i" 377 IDENT@774..775 "i"
378 R_PAREN@[775; 776) ")" 378 R_PAREN@775..776 ")"
379 R_CURLY@[776; 777) "}" 379 R_CURLY@776..777 "}"
380 SEMICOLON@[777; 778) ";" 380 SEMICOLON@777..778 ";"
381 WHITESPACE@[778; 783) "\n " 381 WHITESPACE@778..783 "\n "
382 EXPR_STMT@[783; 790) 382 EXPR_STMT@783..790
383 CALL_EXPR@[783; 789) 383 CALL_EXPR@783..789
384 PATH_EXPR@[783; 787) 384 PATH_EXPR@783..787
385 PATH@[783; 787) 385 PATH@783..787
386 PATH_SEGMENT@[783; 787) 386 PATH_SEGMENT@783..787
387 NAME_REF@[783; 787) 387 NAME_REF@783..787
388 IDENT@[783; 787) "dont" 388 IDENT@783..787 "dont"
389 ARG_LIST@[787; 789) 389 ARG_LIST@787..789
390 L_PAREN@[787; 788) "(" 390 L_PAREN@787..788 "("
391 R_PAREN@[788; 789) ")" 391 R_PAREN@788..789 ")"
392 SEMICOLON@[789; 790) ";" 392 SEMICOLON@789..790 ";"
393 WHITESPACE@[790; 795) "\n " 393 WHITESPACE@790..795 "\n "
394 EXPR_STMT@[795; 814) 394 EXPR_STMT@795..814
395 MACRO_CALL@[795; 813) 395 MACRO_CALL@795..813
396 PATH@[795; 801) 396 PATH@795..801
397 PATH_SEGMENT@[795; 801) 397 PATH_SEGMENT@795..801
398 NAME_REF@[795; 801) 398 NAME_REF@795..801
399 IDENT@[795; 801) "assert" 399 IDENT@795..801 "assert"
400 BANG@[801; 802) "!" 400 BANG@801..802 "!"
401 TOKEN_TREE@[802; 813) 401 TOKEN_TREE@802..813
402 L_PAREN@[802; 803) "(" 402 L_PAREN@802..803 "("
403 TOKEN_TREE@[803; 812) 403 TOKEN_TREE@803..812
404 L_PAREN@[803; 804) "(" 404 L_PAREN@803..804 "("
405 IDENT@[804; 805) "i" 405 IDENT@804..805 "i"
406 DOT@[805; 806) "." 406 DOT@805..806 "."
407 IDENT@[806; 809) "get" 407 IDENT@806..809 "get"
408 TOKEN_TREE@[809; 811) 408 TOKEN_TREE@809..811
409 L_PAREN@[809; 810) "(" 409 L_PAREN@809..810 "("
410 R_PAREN@[810; 811) ")" 410 R_PAREN@810..811 ")"
411 R_PAREN@[811; 812) ")" 411 R_PAREN@811..812 ")"
412 R_PAREN@[812; 813) ")" 412 R_PAREN@812..813 ")"
413 SEMICOLON@[813; 814) ";" 413 SEMICOLON@813..814 ";"
414 WHITESPACE@[814; 815) "\n" 414 WHITESPACE@814..815 "\n"
415 R_CURLY@[815; 816) "}" 415 R_CURLY@815..816 "}"
416 WHITESPACE@[816; 818) "\n\n" 416 WHITESPACE@816..818 "\n\n"
417 FN_DEF@[818; 1322) 417 FN_DEF@818..1322
418 FN_KW@[818; 820) "fn" 418 FN_KW@818..820 "fn"
419 WHITESPACE@[820; 821) " " 419 WHITESPACE@820..821 " "
420 NAME@[821; 832) 420 NAME@821..832
421 IDENT@[821; 832) "zombiejesus" 421 IDENT@821..832 "zombiejesus"
422 PARAM_LIST@[832; 834) 422 PARAM_LIST@832..834
423 L_PAREN@[832; 833) "(" 423 L_PAREN@832..833 "("
424 R_PAREN@[833; 834) ")" 424 R_PAREN@833..834 ")"
425 WHITESPACE@[834; 835) " " 425 WHITESPACE@834..835 " "
426 BLOCK_EXPR@[835; 1322) 426 BLOCK_EXPR@835..1322
427 BLOCK@[835; 1322) 427 BLOCK@835..1322
428 L_CURLY@[835; 836) "{" 428 L_CURLY@835..836 "{"
429 WHITESPACE@[836; 841) "\n " 429 WHITESPACE@836..841 "\n "
430 LOOP_EXPR@[841; 1320) 430 LOOP_EXPR@841..1320
431 LOOP_KW@[841; 845) "loop" 431 LOOP_KW@841..845 "loop"
432 WHITESPACE@[845; 846) " " 432 WHITESPACE@845..846 " "
433 BLOCK_EXPR@[846; 1320) 433 BLOCK_EXPR@846..1320
434 BLOCK@[846; 1320) 434 BLOCK@846..1320
435 L_CURLY@[846; 847) "{" 435 L_CURLY@846..847 "{"
436 WHITESPACE@[847; 856) "\n " 436 WHITESPACE@847..856 "\n "
437 EXPR_STMT@[856; 1283) 437 EXPR_STMT@856..1283
438 WHILE_EXPR@[856; 1283) 438 WHILE_EXPR@856..1283
439 WHILE_KW@[856; 861) "while" 439 WHILE_KW@856..861 "while"
440 WHITESPACE@[861; 862) " " 440 WHITESPACE@861..862 " "
441 CONDITION@[862; 870) 441 CONDITION@862..870
442 PAREN_EXPR@[862; 870) 442 PAREN_EXPR@862..870
443 L_PAREN@[862; 863) "(" 443 L_PAREN@862..863 "("
444 RETURN_EXPR@[863; 869) 444 RETURN_EXPR@863..869
445 RETURN_KW@[863; 869) "return" 445 RETURN_KW@863..869 "return"
446 R_PAREN@[869; 870) ")" 446 R_PAREN@869..870 ")"
447 WHITESPACE@[870; 871) " " 447 WHITESPACE@870..871 " "
448 BLOCK_EXPR@[871; 1283) 448 BLOCK_EXPR@871..1283
449 BLOCK@[871; 1283) 449 BLOCK@871..1283
450 L_CURLY@[871; 872) "{" 450 L_CURLY@871..872 "{"
451 WHITESPACE@[872; 885) "\n " 451 WHITESPACE@872..885 "\n "
452 IF_EXPR@[885; 1273) 452 IF_EXPR@885..1273
453 IF_KW@[885; 887) "if" 453 IF_KW@885..887 "if"
454 WHITESPACE@[887; 888) " " 454 WHITESPACE@887..888 " "
455 CONDITION@[888; 896) 455 CONDITION@888..896
456 PAREN_EXPR@[888; 896) 456 PAREN_EXPR@888..896
457 L_PAREN@[888; 889) "(" 457 L_PAREN@888..889 "("
458 RETURN_EXPR@[889; 895) 458 RETURN_EXPR@889..895
459 RETURN_KW@[889; 895) "return" 459 RETURN_KW@889..895 "return"
460 R_PAREN@[895; 896) ")" 460 R_PAREN@895..896 ")"
461 WHITESPACE@[896; 897) " " 461 WHITESPACE@896..897 " "
462 BLOCK_EXPR@[897; 1216) 462 BLOCK_EXPR@897..1216
463 BLOCK@[897; 1216) 463 BLOCK@897..1216
464 L_CURLY@[897; 898) "{" 464 L_CURLY@897..898 "{"
465 WHITESPACE@[898; 915) "\n " 465 WHITESPACE@898..915 "\n "
466 EXPR_STMT@[915; 1202) 466 EXPR_STMT@915..1202
467 MATCH_EXPR@[915; 1201) 467 MATCH_EXPR@915..1201
468 MATCH_KW@[915; 920) "match" 468 MATCH_KW@915..920 "match"
469 WHITESPACE@[920; 921) " " 469 WHITESPACE@920..921 " "
470 PAREN_EXPR@[921; 929) 470 PAREN_EXPR@921..929
471 L_PAREN@[921; 922) "(" 471 L_PAREN@921..922 "("
472 RETURN_EXPR@[922; 928) 472 RETURN_EXPR@922..928
473 RETURN_KW@[922; 928) "return" 473 RETURN_KW@922..928 "return"
474 R_PAREN@[928; 929) ")" 474 R_PAREN@928..929 ")"
475 WHITESPACE@[929; 930) " " 475 WHITESPACE@929..930 " "
476 MATCH_ARM_LIST@[930; 1201) 476 MATCH_ARM_LIST@930..1201
477 L_CURLY@[930; 931) "{" 477 L_CURLY@930..931 "{"
478 WHITESPACE@[931; 952) "\n " 478 WHITESPACE@931..952 "\n "
479 MATCH_ARM@[952; 1147) 479 MATCH_ARM@952..1147
480 LITERAL_PAT@[952; 953) 480 LITERAL_PAT@952..953
481 LITERAL@[952; 953) 481 LITERAL@952..953
482 INT_NUMBER@[952; 953) "1" 482 INT_NUMBER@952..953 "1"
483 WHITESPACE@[953; 954) " " 483 WHITESPACE@953..954 " "
484 FAT_ARROW@[954; 956) "=>" 484 FAT_ARROW@954..956 "=>"
485 WHITESPACE@[956; 957) " " 485 WHITESPACE@956..957 " "
486 BLOCK_EXPR@[957; 1147) 486 BLOCK_EXPR@957..1147
487 BLOCK@[957; 1147) 487 BLOCK@957..1147
488 L_CURLY@[957; 958) "{" 488 L_CURLY@957..958 "{"
489 WHITESPACE@[958; 983) "\n ..." 489 WHITESPACE@958..983 "\n ..."
490 IF_EXPR@[983; 1125) 490 IF_EXPR@983..1125
491 IF_KW@[983; 985) "if" 491 IF_KW@983..985 "if"
492 WHITESPACE@[985; 986) " " 492 WHITESPACE@985..986 " "
493 CONDITION@[986; 994) 493 CONDITION@986..994
494 PAREN_EXPR@[986; 994) 494 PAREN_EXPR@986..994
495 L_PAREN@[986; 987) "(" 495 L_PAREN@986..987 "("
496 RETURN_EXPR@[987; 993) 496 RETURN_EXPR@987..993
497 RETURN_KW@[987; 993) "return" 497 RETURN_KW@987..993 "return"
498 R_PAREN@[993; 994) ")" 498 R_PAREN@993..994 ")"
499 WHITESPACE@[994; 995) " " 499 WHITESPACE@994..995 " "
500 BLOCK_EXPR@[995; 1057) 500 BLOCK_EXPR@995..1057
501 BLOCK@[995; 1057) 501 BLOCK@995..1057
502 L_CURLY@[995; 996) "{" 502 L_CURLY@995..996 "{"
503 WHITESPACE@[996; 1025) "\n ..." 503 WHITESPACE@996..1025 "\n ..."
504 RETURN_EXPR@[1025; 1031) 504 RETURN_EXPR@1025..1031
505 RETURN_KW@[1025; 1031) "return" 505 RETURN_KW@1025..1031 "return"
506 WHITESPACE@[1031; 1056) "\n ..." 506 WHITESPACE@1031..1056 "\n ..."
507 R_CURLY@[1056; 1057) "}" 507 R_CURLY@1056..1057 "}"
508 WHITESPACE@[1057; 1058) " " 508 WHITESPACE@1057..1058 " "
509 ELSE_KW@[1058; 1062) "else" 509 ELSE_KW@1058..1062 "else"
510 WHITESPACE@[1062; 1063) " " 510 WHITESPACE@1062..1063 " "
511 BLOCK_EXPR@[1063; 1125) 511 BLOCK_EXPR@1063..1125
512 BLOCK@[1063; 1125) 512 BLOCK@1063..1125
513 L_CURLY@[1063; 1064) "{" 513 L_CURLY@1063..1064 "{"
514 WHITESPACE@[1064; 1093) "\n ..." 514 WHITESPACE@1064..1093 "\n ..."
515 RETURN_EXPR@[1093; 1099) 515 RETURN_EXPR@1093..1099
516 RETURN_KW@[1093; 1099) "return" 516 RETURN_KW@1093..1099 "return"
517 WHITESPACE@[1099; 1124) "\n ..." 517 WHITESPACE@1099..1124 "\n ..."
518 R_CURLY@[1124; 1125) "}" 518 R_CURLY@1124..1125 "}"
519 WHITESPACE@[1125; 1146) "\n " 519 WHITESPACE@1125..1146 "\n "
520 R_CURLY@[1146; 1147) "}" 520 R_CURLY@1146..1147 "}"
521 WHITESPACE@[1147; 1168) "\n " 521 WHITESPACE@1147..1168 "\n "
522 MATCH_ARM@[1168; 1183) 522 MATCH_ARM@1168..1183
523 PLACEHOLDER_PAT@[1168; 1169) 523 PLACEHOLDER_PAT@1168..1169
524 UNDERSCORE@[1168; 1169) "_" 524 UNDERSCORE@1168..1169 "_"
525 WHITESPACE@[1169; 1170) " " 525 WHITESPACE@1169..1170 " "
526 FAT_ARROW@[1170; 1172) "=>" 526 FAT_ARROW@1170..1172 "=>"
527 WHITESPACE@[1172; 1173) " " 527 WHITESPACE@1172..1173 " "
528 BLOCK_EXPR@[1173; 1183) 528 BLOCK_EXPR@1173..1183
529 BLOCK@[1173; 1183) 529 BLOCK@1173..1183
530 L_CURLY@[1173; 1174) "{" 530 L_CURLY@1173..1174 "{"
531 WHITESPACE@[1174; 1175) " " 531 WHITESPACE@1174..1175 " "
532 RETURN_EXPR@[1175; 1181) 532 RETURN_EXPR@1175..1181
533 RETURN_KW@[1175; 1181) "return" 533 RETURN_KW@1175..1181 "return"
534 WHITESPACE@[1181; 1182) " " 534 WHITESPACE@1181..1182 " "
535 R_CURLY@[1182; 1183) "}" 535 R_CURLY@1182..1183 "}"
536 WHITESPACE@[1183; 1200) "\n " 536 WHITESPACE@1183..1200 "\n "
537 R_CURLY@[1200; 1201) "}" 537 R_CURLY@1200..1201 "}"
538 SEMICOLON@[1201; 1202) ";" 538 SEMICOLON@1201..1202 ";"
539 WHITESPACE@[1202; 1215) "\n " 539 WHITESPACE@1202..1215 "\n "
540 R_CURLY@[1215; 1216) "}" 540 R_CURLY@1215..1216 "}"
541 WHITESPACE@[1216; 1217) " " 541 WHITESPACE@1216..1217 " "
542 ELSE_KW@[1217; 1221) "else" 542 ELSE_KW@1217..1221 "else"
543 WHITESPACE@[1221; 1222) " " 543 WHITESPACE@1221..1222 " "
544 IF_EXPR@[1222; 1273) 544 IF_EXPR@1222..1273
545 IF_KW@[1222; 1224) "if" 545 IF_KW@1222..1224 "if"
546 WHITESPACE@[1224; 1225) " " 546 WHITESPACE@1224..1225 " "
547 CONDITION@[1225; 1233) 547 CONDITION@1225..1233
548 PAREN_EXPR@[1225; 1233) 548 PAREN_EXPR@1225..1233
549 L_PAREN@[1225; 1226) "(" 549 L_PAREN@1225..1226 "("
550 RETURN_EXPR@[1226; 1232) 550 RETURN_EXPR@1226..1232
551 RETURN_KW@[1226; 1232) "return" 551 RETURN_KW@1226..1232 "return"
552 R_PAREN@[1232; 1233) ")" 552 R_PAREN@1232..1233 ")"
553 WHITESPACE@[1233; 1234) " " 553 WHITESPACE@1233..1234 " "
554 BLOCK_EXPR@[1234; 1273) 554 BLOCK_EXPR@1234..1273
555 BLOCK@[1234; 1273) 555 BLOCK@1234..1273
556 L_CURLY@[1234; 1235) "{" 556 L_CURLY@1234..1235 "{"
557 WHITESPACE@[1235; 1252) "\n " 557 WHITESPACE@1235..1252 "\n "
558 EXPR_STMT@[1252; 1259) 558 EXPR_STMT@1252..1259
559 RETURN_EXPR@[1252; 1258) 559 RETURN_EXPR@1252..1258
560 RETURN_KW@[1252; 1258) "return" 560 RETURN_KW@1252..1258 "return"
561 SEMICOLON@[1258; 1259) ";" 561 SEMICOLON@1258..1259 ";"
562 WHITESPACE@[1259; 1272) "\n " 562 WHITESPACE@1259..1272 "\n "
563 R_CURLY@[1272; 1273) "}" 563 R_CURLY@1272..1273 "}"
564 WHITESPACE@[1273; 1282) "\n " 564 WHITESPACE@1273..1282 "\n "
565 R_CURLY@[1282; 1283) "}" 565 R_CURLY@1282..1283 "}"
566 WHITESPACE@[1283; 1292) "\n " 566 WHITESPACE@1283..1292 "\n "
567 IF_EXPR@[1292; 1314) 567 IF_EXPR@1292..1314
568 IF_KW@[1292; 1294) "if" 568 IF_KW@1292..1294 "if"
569 WHITESPACE@[1294; 1295) " " 569 WHITESPACE@1294..1295 " "
570 CONDITION@[1295; 1303) 570 CONDITION@1295..1303
571 PAREN_EXPR@[1295; 1303) 571 PAREN_EXPR@1295..1303
572 L_PAREN@[1295; 1296) "(" 572 L_PAREN@1295..1296 "("
573 RETURN_EXPR@[1296; 1302) 573 RETURN_EXPR@1296..1302
574 RETURN_KW@[1296; 1302) "return" 574 RETURN_KW@1296..1302 "return"
575 R_PAREN@[1302; 1303) ")" 575 R_PAREN@1302..1303 ")"
576 WHITESPACE@[1303; 1304) " " 576 WHITESPACE@1303..1304 " "
577 BLOCK_EXPR@[1304; 1314) 577 BLOCK_EXPR@1304..1314
578 BLOCK@[1304; 1314) 578 BLOCK@1304..1314
579 L_CURLY@[1304; 1305) "{" 579 L_CURLY@1304..1305 "{"
580 WHITESPACE@[1305; 1306) " " 580 WHITESPACE@1305..1306 " "
581 EXPR_STMT@[1306; 1312) 581 EXPR_STMT@1306..1312
582 BREAK_EXPR@[1306; 1311) 582 BREAK_EXPR@1306..1311
583 BREAK_KW@[1306; 1311) "break" 583 BREAK_KW@1306..1311 "break"
584 SEMICOLON@[1311; 1312) ";" 584 SEMICOLON@1311..1312 ";"
585 WHITESPACE@[1312; 1313) " " 585 WHITESPACE@1312..1313 " "
586 R_CURLY@[1313; 1314) "}" 586 R_CURLY@1313..1314 "}"
587 WHITESPACE@[1314; 1319) "\n " 587 WHITESPACE@1314..1319 "\n "
588 R_CURLY@[1319; 1320) "}" 588 R_CURLY@1319..1320 "}"
589 WHITESPACE@[1320; 1321) "\n" 589 WHITESPACE@1320..1321 "\n"
590 R_CURLY@[1321; 1322) "}" 590 R_CURLY@1321..1322 "}"
591 WHITESPACE@[1322; 1324) "\n\n" 591 WHITESPACE@1322..1324 "\n\n"
592 FN_DEF@[1324; 1539) 592 FN_DEF@1324..1539
593 FN_KW@[1324; 1326) "fn" 593 FN_KW@1324..1326 "fn"
594 WHITESPACE@[1326; 1327) " " 594 WHITESPACE@1326..1327 " "
595 NAME@[1327; 1334) 595 NAME@1327..1334
596 IDENT@[1327; 1334) "notsure" 596 IDENT@1327..1334 "notsure"
597 PARAM_LIST@[1334; 1336) 597 PARAM_LIST@1334..1336
598 L_PAREN@[1334; 1335) "(" 598 L_PAREN@1334..1335 "("
599 R_PAREN@[1335; 1336) ")" 599 R_PAREN@1335..1336 ")"
600 WHITESPACE@[1336; 1337) " " 600 WHITESPACE@1336..1337 " "
601 BLOCK_EXPR@[1337; 1539) 601 BLOCK_EXPR@1337..1539
602 BLOCK@[1337; 1539) 602 BLOCK@1337..1539
603 L_CURLY@[1337; 1338) "{" 603 L_CURLY@1337..1338 "{"
604 WHITESPACE@[1338; 1343) "\n " 604 WHITESPACE@1338..1343 "\n "
605 LET_STMT@[1343; 1361) 605 LET_STMT@1343..1361
606 LET_KW@[1343; 1346) "let" 606 LET_KW@1343..1346 "let"
607 WHITESPACE@[1346; 1347) " " 607 WHITESPACE@1346..1347 " "
608 BIND_PAT@[1347; 1353) 608 BIND_PAT@1347..1353
609 MUT_KW@[1347; 1350) "mut" 609 MUT_KW@1347..1350 "mut"
610 WHITESPACE@[1350; 1351) " " 610 WHITESPACE@1350..1351 " "
611 NAME@[1351; 1353) 611 NAME@1351..1353
612 IDENT@[1351; 1353) "_x" 612 IDENT@1351..1353 "_x"
613 COLON@[1353; 1354) ":" 613 COLON@1353..1354 ":"
614 WHITESPACE@[1354; 1355) " " 614 WHITESPACE@1354..1355 " "
615 PATH_TYPE@[1355; 1360) 615 PATH_TYPE@1355..1360
616 PATH@[1355; 1360) 616 PATH@1355..1360
617 PATH_SEGMENT@[1355; 1360) 617 PATH_SEGMENT@1355..1360
618 NAME_REF@[1355; 1360) 618 NAME_REF@1355..1360
619 IDENT@[1355; 1360) "isize" 619 IDENT@1355..1360 "isize"
620 SEMICOLON@[1360; 1361) ";" 620 SEMICOLON@1360..1361 ";"
621 WHITESPACE@[1361; 1366) "\n " 621 WHITESPACE@1361..1366 "\n "
622 LET_STMT@[1366; 1400) 622 LET_STMT@1366..1400
623 LET_KW@[1366; 1369) "let" 623 LET_KW@1366..1369 "let"
624 WHITESPACE@[1369; 1370) " " 624 WHITESPACE@1369..1370 " "
625 BIND_PAT@[1370; 1376) 625 BIND_PAT@1370..1376
626 MUT_KW@[1370; 1373) "mut" 626 MUT_KW@1370..1373 "mut"
627 WHITESPACE@[1373; 1374) " " 627 WHITESPACE@1373..1374 " "
628 NAME@[1374; 1376) 628 NAME@1374..1376
629 IDENT@[1374; 1376) "_y" 629 IDENT@1374..1376 "_y"
630 WHITESPACE@[1376; 1377) " " 630 WHITESPACE@1376..1377 " "
631 EQ@[1377; 1378) "=" 631 EQ@1377..1378 "="
632 WHITESPACE@[1378; 1379) " " 632 WHITESPACE@1378..1379 " "
633 BIN_EXPR@[1379; 1399) 633 BIN_EXPR@1379..1399
634 PAREN_EXPR@[1379; 1387) 634 PAREN_EXPR@1379..1387
635 L_PAREN@[1379; 1380) "(" 635 L_PAREN@1379..1380 "("
636 BIN_EXPR@[1380; 1386) 636 BIN_EXPR@1380..1386
637 PATH_EXPR@[1380; 1382) 637 PATH_EXPR@1380..1382
638 PATH@[1380; 1382) 638 PATH@1380..1382
639 PATH_SEGMENT@[1380; 1382) 639 PATH_SEGMENT@1380..1382
640 NAME_REF@[1380; 1382) 640 NAME_REF@1380..1382
641 IDENT@[1380; 1382) "_x" 641 IDENT@1380..1382 "_x"
642 WHITESPACE@[1382; 1383) " " 642 WHITESPACE@1382..1383 " "
643 EQ@[1383; 1384) "=" 643 EQ@1383..1384 "="
644 WHITESPACE@[1384; 1385) " " 644 WHITESPACE@1384..1385 " "
645 LITERAL@[1385; 1386) 645 LITERAL@1385..1386
646 INT_NUMBER@[1385; 1386) "0" 646 INT_NUMBER@1385..1386 "0"
647 R_PAREN@[1386; 1387) ")" 647 R_PAREN@1386..1387 ")"
648 WHITESPACE@[1387; 1388) " " 648 WHITESPACE@1387..1388 " "
649 EQ2@[1388; 1390) "==" 649 EQ2@1388..1390 "=="
650 WHITESPACE@[1390; 1391) " " 650 WHITESPACE@1390..1391 " "
651 PAREN_EXPR@[1391; 1399) 651 PAREN_EXPR@1391..1399
652 L_PAREN@[1391; 1392) "(" 652 L_PAREN@1391..1392 "("
653 BIN_EXPR@[1392; 1398) 653 BIN_EXPR@1392..1398
654 PATH_EXPR@[1392; 1394) 654 PATH_EXPR@1392..1394
655 PATH@[1392; 1394) 655 PATH@1392..1394
656 PATH_SEGMENT@[1392; 1394) 656 PATH_SEGMENT@1392..1394
657 NAME_REF@[1392; 1394) 657 NAME_REF@1392..1394
658 IDENT@[1392; 1394) "_x" 658 IDENT@1392..1394 "_x"
659 WHITESPACE@[1394; 1395) " " 659 WHITESPACE@1394..1395 " "
660 EQ@[1395; 1396) "=" 660 EQ@1395..1396 "="
661 WHITESPACE@[1396; 1397) " " 661 WHITESPACE@1396..1397 " "
662 LITERAL@[1397; 1398) 662 LITERAL@1397..1398
663 INT_NUMBER@[1397; 1398) "0" 663 INT_NUMBER@1397..1398 "0"
664 R_PAREN@[1398; 1399) ")" 664 R_PAREN@1398..1399 ")"
665 SEMICOLON@[1399; 1400) ";" 665 SEMICOLON@1399..1400 ";"
666 WHITESPACE@[1400; 1405) "\n " 666 WHITESPACE@1400..1405 "\n "
667 LET_STMT@[1405; 1438) 667 LET_STMT@1405..1438
668 LET_KW@[1405; 1408) "let" 668 LET_KW@1405..1408 "let"
669 WHITESPACE@[1408; 1409) " " 669 WHITESPACE@1408..1409 " "
670 BIND_PAT@[1409; 1415) 670 BIND_PAT@1409..1415
671 MUT_KW@[1409; 1412) "mut" 671 MUT_KW@1409..1412 "mut"
672 WHITESPACE@[1412; 1413) " " 672 WHITESPACE@1412..1413 " "
673 NAME@[1413; 1415) 673 NAME@1413..1415
674 IDENT@[1413; 1415) "_z" 674 IDENT@1413..1415 "_z"
675 WHITESPACE@[1415; 1416) " " 675 WHITESPACE@1415..1416 " "
676 EQ@[1416; 1417) "=" 676 EQ@1416..1417 "="
677 WHITESPACE@[1417; 1418) " " 677 WHITESPACE@1417..1418 " "
678 BIN_EXPR@[1418; 1437) 678 BIN_EXPR@1418..1437
679 PAREN_EXPR@[1418; 1426) 679 PAREN_EXPR@1418..1426
680 L_PAREN@[1418; 1419) "(" 680 L_PAREN@1418..1419 "("
681 BIN_EXPR@[1419; 1425) 681 BIN_EXPR@1419..1425
682 PATH_EXPR@[1419; 1421) 682 PATH_EXPR@1419..1421
683 PATH@[1419; 1421) 683 PATH@1419..1421
684 PATH_SEGMENT@[1419; 1421) 684 PATH_SEGMENT@1419..1421
685 NAME_REF@[1419; 1421) 685 NAME_REF@1419..1421
686 IDENT@[1419; 1421) "_x" 686 IDENT@1419..1421 "_x"
687 WHITESPACE@[1421; 1422) " " 687 WHITESPACE@1421..1422 " "
688 EQ@[1422; 1423) "=" 688 EQ@1422..1423 "="
689 WHITESPACE@[1423; 1424) " " 689 WHITESPACE@1423..1424 " "
690 LITERAL@[1424; 1425) 690 LITERAL@1424..1425
691 INT_NUMBER@[1424; 1425) "0" 691 INT_NUMBER@1424..1425 "0"
692 R_PAREN@[1425; 1426) ")" 692 R_PAREN@1425..1426 ")"
693 WHITESPACE@[1426; 1427) " " 693 WHITESPACE@1426..1427 " "
694 L_ANGLE@[1427; 1428) "<" 694 L_ANGLE@1427..1428 "<"
695 WHITESPACE@[1428; 1429) " " 695 WHITESPACE@1428..1429 " "
696 PAREN_EXPR@[1429; 1437) 696 PAREN_EXPR@1429..1437
697 L_PAREN@[1429; 1430) "(" 697 L_PAREN@1429..1430 "("
698 BIN_EXPR@[1430; 1436) 698 BIN_EXPR@1430..1436
699 PATH_EXPR@[1430; 1432) 699 PATH_EXPR@1430..1432
700 PATH@[1430; 1432) 700 PATH@1430..1432
701 PATH_SEGMENT@[1430; 1432) 701 PATH_SEGMENT@1430..1432
702 NAME_REF@[1430; 1432) 702 NAME_REF@1430..1432
703 IDENT@[1430; 1432) "_x" 703 IDENT@1430..1432 "_x"
704 WHITESPACE@[1432; 1433) " " 704 WHITESPACE@1432..1433 " "
705 EQ@[1433; 1434) "=" 705 EQ@1433..1434 "="
706 WHITESPACE@[1434; 1435) " " 706 WHITESPACE@1434..1435 " "
707 LITERAL@[1435; 1436) 707 LITERAL@1435..1436
708 INT_NUMBER@[1435; 1436) "0" 708 INT_NUMBER@1435..1436 "0"
709 R_PAREN@[1436; 1437) ")" 709 R_PAREN@1436..1437 ")"
710 SEMICOLON@[1437; 1438) ";" 710 SEMICOLON@1437..1438 ";"
711 WHITESPACE@[1438; 1443) "\n " 711 WHITESPACE@1438..1443 "\n "
712 LET_STMT@[1443; 1474) 712 LET_STMT@1443..1474
713 LET_KW@[1443; 1446) "let" 713 LET_KW@1443..1446 "let"
714 WHITESPACE@[1446; 1447) " " 714 WHITESPACE@1446..1447 " "
715 BIND_PAT@[1447; 1449) 715 BIND_PAT@1447..1449
716 NAME@[1447; 1449) 716 NAME@1447..1449
717 IDENT@[1447; 1449) "_a" 717 IDENT@1447..1449 "_a"
718 WHITESPACE@[1449; 1450) " " 718 WHITESPACE@1449..1450 " "
719 EQ@[1450; 1451) "=" 719 EQ@1450..1451 "="
720 WHITESPACE@[1451; 1452) " " 720 WHITESPACE@1451..1452 " "
721 BIN_EXPR@[1452; 1473) 721 BIN_EXPR@1452..1473
722 PAREN_EXPR@[1452; 1461) 722 PAREN_EXPR@1452..1461
723 L_PAREN@[1452; 1453) "(" 723 L_PAREN@1452..1453 "("
724 BIN_EXPR@[1453; 1460) 724 BIN_EXPR@1453..1460
725 PATH_EXPR@[1453; 1455) 725 PATH_EXPR@1453..1455
726 PATH@[1453; 1455) 726 PATH@1453..1455
727 PATH_SEGMENT@[1453; 1455) 727 PATH_SEGMENT@1453..1455
728 NAME_REF@[1453; 1455) 728 NAME_REF@1453..1455
729 IDENT@[1453; 1455) "_x" 729 IDENT@1453..1455 "_x"
730 WHITESPACE@[1455; 1456) " " 730 WHITESPACE@1455..1456 " "
731 PLUSEQ@[1456; 1458) "+=" 731 PLUSEQ@1456..1458 "+="
732 WHITESPACE@[1458; 1459) " " 732 WHITESPACE@1458..1459 " "
733 LITERAL@[1459; 1460) 733 LITERAL@1459..1460
734 INT_NUMBER@[1459; 1460) "0" 734 INT_NUMBER@1459..1460 "0"
735 R_PAREN@[1460; 1461) ")" 735 R_PAREN@1460..1461 ")"
736 WHITESPACE@[1461; 1462) " " 736 WHITESPACE@1461..1462 " "
737 EQ2@[1462; 1464) "==" 737 EQ2@1462..1464 "=="
738 WHITESPACE@[1464; 1465) " " 738 WHITESPACE@1464..1465 " "
739 PAREN_EXPR@[1465; 1473) 739 PAREN_EXPR@1465..1473
740 L_PAREN@[1465; 1466) "(" 740 L_PAREN@1465..1466 "("
741 BIN_EXPR@[1466; 1472) 741 BIN_EXPR@1466..1472
742 PATH_EXPR@[1466; 1468) 742 PATH_EXPR@1466..1468
743 PATH@[1466; 1468) 743 PATH@1466..1468
744 PATH_SEGMENT@[1466; 1468) 744 PATH_SEGMENT@1466..1468
745 NAME_REF@[1466; 1468) 745 NAME_REF@1466..1468
746 IDENT@[1466; 1468) "_x" 746 IDENT@1466..1468 "_x"
747 WHITESPACE@[1468; 1469) " " 747 WHITESPACE@1468..1469 " "
748 EQ@[1469; 1470) "=" 748 EQ@1469..1470 "="
749 WHITESPACE@[1470; 1471) " " 749 WHITESPACE@1470..1471 " "
750 LITERAL@[1471; 1472) 750 LITERAL@1471..1472
751 INT_NUMBER@[1471; 1472) "0" 751 INT_NUMBER@1471..1472 "0"
752 R_PAREN@[1472; 1473) ")" 752 R_PAREN@1472..1473 ")"
753 SEMICOLON@[1473; 1474) ";" 753 SEMICOLON@1473..1474 ";"
754 WHITESPACE@[1474; 1479) "\n " 754 WHITESPACE@1474..1479 "\n "
755 LET_STMT@[1479; 1537) 755 LET_STMT@1479..1537
756 LET_KW@[1479; 1482) "let" 756 LET_KW@1479..1482 "let"
757 WHITESPACE@[1482; 1483) " " 757 WHITESPACE@1482..1483 " "
758 BIND_PAT@[1483; 1485) 758 BIND_PAT@1483..1485
759 NAME@[1483; 1485) 759 NAME@1483..1485
760 IDENT@[1483; 1485) "_b" 760 IDENT@1483..1485 "_b"
761 WHITESPACE@[1485; 1486) " " 761 WHITESPACE@1485..1486 " "
762 EQ@[1486; 1487) "=" 762 EQ@1486..1487 "="
763 WHITESPACE@[1487; 1488) " " 763 WHITESPACE@1487..1488 " "
764 BIN_EXPR@[1488; 1536) 764 BIN_EXPR@1488..1536
765 CALL_EXPR@[1488; 1510) 765 CALL_EXPR@1488..1510
766 PATH_EXPR@[1488; 1492) 766 PATH_EXPR@1488..1492
767 PATH@[1488; 1492) 767 PATH@1488..1492
768 PATH_SEGMENT@[1488; 1492) 768 PATH_SEGMENT@1488..1492
769 NAME_REF@[1488; 1492) 769 NAME_REF@1488..1492
770 IDENT@[1488; 1492) "swap" 770 IDENT@1488..1492 "swap"
771 ARG_LIST@[1492; 1510) 771 ARG_LIST@1492..1510
772 L_PAREN@[1492; 1493) "(" 772 L_PAREN@1492..1493 "("
773 REF_EXPR@[1493; 1500) 773 REF_EXPR@1493..1500
774 AMP@[1493; 1494) "&" 774 AMP@1493..1494 "&"
775 MUT_KW@[1494; 1497) "mut" 775 MUT_KW@1494..1497 "mut"
776 WHITESPACE@[1497; 1498) " " 776 WHITESPACE@1497..1498 " "
777 PATH_EXPR@[1498; 1500) 777 PATH_EXPR@1498..1500
778 PATH@[1498; 1500) 778 PATH@1498..1500
779 PATH_SEGMENT@[1498; 1500) 779 PATH_SEGMENT@1498..1500
780 NAME_REF@[1498; 1500) 780 NAME_REF@1498..1500
781 IDENT@[1498; 1500) "_y" 781 IDENT@1498..1500 "_y"
782 COMMA@[1500; 1501) "," 782 COMMA@1500..1501 ","
783 WHITESPACE@[1501; 1502) " " 783 WHITESPACE@1501..1502 " "
784 REF_EXPR@[1502; 1509) 784 REF_EXPR@1502..1509
785 AMP@[1502; 1503) "&" 785 AMP@1502..1503 "&"
786 MUT_KW@[1503; 1506) "mut" 786 MUT_KW@1503..1506 "mut"
787 WHITESPACE@[1506; 1507) " " 787 WHITESPACE@1506..1507 " "
788 PATH_EXPR@[1507; 1509) 788 PATH_EXPR@1507..1509
789 PATH@[1507; 1509) 789 PATH@1507..1509
790 PATH_SEGMENT@[1507; 1509) 790 PATH_SEGMENT@1507..1509
791 NAME_REF@[1507; 1509) 791 NAME_REF@1507..1509
792 IDENT@[1507; 1509) "_z" 792 IDENT@1507..1509 "_z"
793 R_PAREN@[1509; 1510) ")" 793 R_PAREN@1509..1510 ")"
794 WHITESPACE@[1510; 1511) " " 794 WHITESPACE@1510..1511 " "
795 EQ2@[1511; 1513) "==" 795 EQ2@1511..1513 "=="
796 WHITESPACE@[1513; 1514) " " 796 WHITESPACE@1513..1514 " "
797 CALL_EXPR@[1514; 1536) 797 CALL_EXPR@1514..1536
798 PATH_EXPR@[1514; 1518) 798 PATH_EXPR@1514..1518
799 PATH@[1514; 1518) 799 PATH@1514..1518
800 PATH_SEGMENT@[1514; 1518) 800 PATH_SEGMENT@1514..1518
801 NAME_REF@[1514; 1518) 801 NAME_REF@1514..1518
802 IDENT@[1514; 1518) "swap" 802 IDENT@1514..1518 "swap"
803 ARG_LIST@[1518; 1536) 803 ARG_LIST@1518..1536
804 L_PAREN@[1518; 1519) "(" 804 L_PAREN@1518..1519 "("
805 REF_EXPR@[1519; 1526) 805 REF_EXPR@1519..1526
806 AMP@[1519; 1520) "&" 806 AMP@1519..1520 "&"
807 MUT_KW@[1520; 1523) "mut" 807 MUT_KW@1520..1523 "mut"
808 WHITESPACE@[1523; 1524) " " 808 WHITESPACE@1523..1524 " "
809 PATH_EXPR@[1524; 1526) 809 PATH_EXPR@1524..1526
810 PATH@[1524; 1526) 810 PATH@1524..1526
811 PATH_SEGMENT@[1524; 1526) 811 PATH_SEGMENT@1524..1526
812 NAME_REF@[1524; 1526) 812 NAME_REF@1524..1526
813 IDENT@[1524; 1526) "_y" 813 IDENT@1524..1526 "_y"
814 COMMA@[1526; 1527) "," 814 COMMA@1526..1527 ","
815 WHITESPACE@[1527; 1528) " " 815 WHITESPACE@1527..1528 " "
816 REF_EXPR@[1528; 1535) 816 REF_EXPR@1528..1535
817 AMP@[1528; 1529) "&" 817 AMP@1528..1529 "&"
818 MUT_KW@[1529; 1532) "mut" 818 MUT_KW@1529..1532 "mut"
819 WHITESPACE@[1532; 1533) " " 819 WHITESPACE@1532..1533 " "
820 PATH_EXPR@[1533; 1535) 820 PATH_EXPR@1533..1535
821 PATH@[1533; 1535) 821 PATH@1533..1535
822 PATH_SEGMENT@[1533; 1535) 822 PATH_SEGMENT@1533..1535
823 NAME_REF@[1533; 1535) 823 NAME_REF@1533..1535
824 IDENT@[1533; 1535) "_z" 824 IDENT@1533..1535 "_z"
825 R_PAREN@[1535; 1536) ")" 825 R_PAREN@1535..1536 ")"
826 SEMICOLON@[1536; 1537) ";" 826 SEMICOLON@1536..1537 ";"
827 WHITESPACE@[1537; 1538) "\n" 827 WHITESPACE@1537..1538 "\n"
828 R_CURLY@[1538; 1539) "}" 828 R_CURLY@1538..1539 "}"
829 WHITESPACE@[1539; 1541) "\n\n" 829 WHITESPACE@1539..1541 "\n\n"
830 FN_DEF@[1541; 1741) 830 FN_DEF@1541..1741
831 FN_KW@[1541; 1543) "fn" 831 FN_KW@1541..1543 "fn"
832 WHITESPACE@[1543; 1544) " " 832 WHITESPACE@1543..1544 " "
833 NAME@[1544; 1557) 833 NAME@1544..1557
834 IDENT@[1544; 1557) "canttouchthis" 834 IDENT@1544..1557 "canttouchthis"
835 PARAM_LIST@[1557; 1559) 835 PARAM_LIST@1557..1559
836 L_PAREN@[1557; 1558) "(" 836 L_PAREN@1557..1558 "("
837 R_PAREN@[1558; 1559) ")" 837 R_PAREN@1558..1559 ")"
838 WHITESPACE@[1559; 1560) " " 838 WHITESPACE@1559..1560 " "
839 RET_TYPE@[1560; 1568) 839 RET_TYPE@1560..1568
840 THIN_ARROW@[1560; 1562) "->" 840 THIN_ARROW@1560..1562 "->"
841 WHITESPACE@[1562; 1563) " " 841 WHITESPACE@1562..1563 " "
842 PATH_TYPE@[1563; 1568) 842 PATH_TYPE@1563..1568
843 PATH@[1563; 1568) 843 PATH@1563..1568
844 PATH_SEGMENT@[1563; 1568) 844 PATH_SEGMENT@1563..1568
845 NAME_REF@[1563; 1568) 845 NAME_REF@1563..1568
846 IDENT@[1563; 1568) "usize" 846 IDENT@1563..1568 "usize"
847 WHITESPACE@[1568; 1569) " " 847 WHITESPACE@1568..1569 " "
848 BLOCK_EXPR@[1569; 1741) 848 BLOCK_EXPR@1569..1741
849 BLOCK@[1569; 1741) 849 BLOCK@1569..1741
850 L_CURLY@[1569; 1570) "{" 850 L_CURLY@1569..1570 "{"
851 WHITESPACE@[1570; 1575) "\n " 851 WHITESPACE@1570..1575 "\n "
852 FN_DEF@[1575; 1598) 852 FN_DEF@1575..1598
853 FN_KW@[1575; 1577) "fn" 853 FN_KW@1575..1577 "fn"
854 WHITESPACE@[1577; 1578) " " 854 WHITESPACE@1577..1578 " "
855 NAME@[1578; 1579) 855 NAME@1578..1579
856 IDENT@[1578; 1579) "p" 856 IDENT@1578..1579 "p"
857 PARAM_LIST@[1579; 1581) 857 PARAM_LIST@1579..1581
858 L_PAREN@[1579; 1580) "(" 858 L_PAREN@1579..1580 "("
859 R_PAREN@[1580; 1581) ")" 859 R_PAREN@1580..1581 ")"
860 WHITESPACE@[1581; 1582) " " 860 WHITESPACE@1581..1582 " "
861 RET_TYPE@[1582; 1589) 861 RET_TYPE@1582..1589
862 THIN_ARROW@[1582; 1584) "->" 862 THIN_ARROW@1582..1584 "->"
863 WHITESPACE@[1584; 1585) " " 863 WHITESPACE@1584..1585 " "
864 PATH_TYPE@[1585; 1589) 864 PATH_TYPE@1585..1589
865 PATH@[1585; 1589) 865 PATH@1585..1589
866 PATH_SEGMENT@[1585; 1589) 866 PATH_SEGMENT@1585..1589
867 NAME_REF@[1585; 1589) 867 NAME_REF@1585..1589
868 IDENT@[1585; 1589) "bool" 868 IDENT@1585..1589 "bool"
869 WHITESPACE@[1589; 1590) " " 869 WHITESPACE@1589..1590 " "
870 BLOCK_EXPR@[1590; 1598) 870 BLOCK_EXPR@1590..1598
871 BLOCK@[1590; 1598) 871 BLOCK@1590..1598
872 L_CURLY@[1590; 1591) "{" 872 L_CURLY@1590..1591 "{"
873 WHITESPACE@[1591; 1592) " " 873 WHITESPACE@1591..1592 " "
874 LITERAL@[1592; 1596) 874 LITERAL@1592..1596
875 TRUE_KW@[1592; 1596) "true" 875 TRUE_KW@1592..1596 "true"
876 WHITESPACE@[1596; 1597) " " 876 WHITESPACE@1596..1597 " "
877 R_CURLY@[1597; 1598) "}" 877 R_CURLY@1597..1598 "}"
878 WHITESPACE@[1598; 1603) "\n " 878 WHITESPACE@1598..1603 "\n "
879 LET_STMT@[1603; 1648) 879 LET_STMT@1603..1648
880 LET_KW@[1603; 1606) "let" 880 LET_KW@1603..1606 "let"
881 WHITESPACE@[1606; 1607) " " 881 WHITESPACE@1606..1607 " "
882 BIND_PAT@[1607; 1609) 882 BIND_PAT@1607..1609
883 NAME@[1607; 1609) 883 NAME@1607..1609
884 IDENT@[1607; 1609) "_a" 884 IDENT@1607..1609 "_a"
885 WHITESPACE@[1609; 1610) " " 885 WHITESPACE@1609..1610 " "
886 EQ@[1610; 1611) "=" 886 EQ@1610..1611 "="
887 WHITESPACE@[1611; 1612) " " 887 WHITESPACE@1611..1612 " "
888 PAREN_EXPR@[1612; 1647) 888 PAREN_EXPR@1612..1647
889 L_PAREN@[1612; 1613) "(" 889 L_PAREN@1612..1613 "("
890 BIN_EXPR@[1613; 1646) 890 BIN_EXPR@1613..1646
891 MACRO_CALL@[1613; 1628) 891 MACRO_CALL@1613..1628
892 PATH@[1613; 1619) 892 PATH@1613..1619
893 PATH_SEGMENT@[1613; 1619) 893 PATH_SEGMENT@1613..1619
894 NAME_REF@[1613; 1619) 894 NAME_REF@1613..1619
895 IDENT@[1613; 1619) "assert" 895 IDENT@1613..1619 "assert"
896 BANG@[1619; 1620) "!" 896 BANG@1619..1620 "!"
897 TOKEN_TREE@[1620; 1628) 897 TOKEN_TREE@1620..1628
898 L_PAREN@[1620; 1621) "(" 898 L_PAREN@1620..1621 "("
899 TOKEN_TREE@[1621; 1627) 899 TOKEN_TREE@1621..1627
900 L_PAREN@[1621; 1622) "(" 900 L_PAREN@1621..1622 "("
901 TRUE_KW@[1622; 1626) "true" 901 TRUE_KW@1622..1626 "true"
902 R_PAREN@[1626; 1627) ")" 902 R_PAREN@1626..1627 ")"
903 R_PAREN@[1627; 1628) ")" 903 R_PAREN@1627..1628 ")"
904 WHITESPACE@[1628; 1629) " " 904 WHITESPACE@1628..1629 " "
905 EQ2@[1629; 1631) "==" 905 EQ2@1629..1631 "=="
906 WHITESPACE@[1631; 1632) " " 906 WHITESPACE@1631..1632 " "
907 PAREN_EXPR@[1632; 1646) 907 PAREN_EXPR@1632..1646
908 L_PAREN@[1632; 1633) "(" 908 L_PAREN@1632..1633 "("
909 MACRO_CALL@[1633; 1645) 909 MACRO_CALL@1633..1645
910 PATH@[1633; 1639) 910 PATH@1633..1639
911 PATH_SEGMENT@[1633; 1639) 911 PATH_SEGMENT@1633..1639
912 NAME_REF@[1633; 1639) 912 NAME_REF@1633..1639
913 IDENT@[1633; 1639) "assert" 913 IDENT@1633..1639 "assert"
914 BANG@[1639; 1640) "!" 914 BANG@1639..1640 "!"
915 TOKEN_TREE@[1640; 1645) 915 TOKEN_TREE@1640..1645
916 L_PAREN@[1640; 1641) "(" 916 L_PAREN@1640..1641 "("
917 IDENT@[1641; 1642) "p" 917 IDENT@1641..1642 "p"
918 TOKEN_TREE@[1642; 1644) 918 TOKEN_TREE@1642..1644
919 L_PAREN@[1642; 1643) "(" 919 L_PAREN@1642..1643 "("
920 R_PAREN@[1643; 1644) ")" 920 R_PAREN@1643..1644 ")"
921 R_PAREN@[1644; 1645) ")" 921 R_PAREN@1644..1645 ")"
922 R_PAREN@[1645; 1646) ")" 922 R_PAREN@1645..1646 ")"
923 R_PAREN@[1646; 1647) ")" 923 R_PAREN@1646..1647 ")"
924 SEMICOLON@[1647; 1648) ";" 924 SEMICOLON@1647..1648 ";"
925 WHITESPACE@[1648; 1653) "\n " 925 WHITESPACE@1648..1653 "\n "
926 LET_STMT@[1653; 1685) 926 LET_STMT@1653..1685
927 LET_KW@[1653; 1656) "let" 927 LET_KW@1653..1656 "let"
928 WHITESPACE@[1656; 1657) " " 928 WHITESPACE@1656..1657 " "
929 BIND_PAT@[1657; 1659) 929 BIND_PAT@1657..1659
930 NAME@[1657; 1659) 930 NAME@1657..1659
931 IDENT@[1657; 1659) "_c" 931 IDENT@1657..1659 "_c"
932 WHITESPACE@[1659; 1660) " " 932 WHITESPACE@1659..1660 " "
933 EQ@[1660; 1661) "=" 933 EQ@1660..1661 "="
934 WHITESPACE@[1661; 1662) " " 934 WHITESPACE@1661..1662 " "
935 PAREN_EXPR@[1662; 1684) 935 PAREN_EXPR@1662..1684
936 L_PAREN@[1662; 1663) "(" 936 L_PAREN@1662..1663 "("
937 BIN_EXPR@[1663; 1683) 937 BIN_EXPR@1663..1683
938 MACRO_CALL@[1663; 1677) 938 MACRO_CALL@1663..1677
939 PATH@[1663; 1669) 939 PATH@1663..1669
940 PATH_SEGMENT@[1663; 1669) 940 PATH_SEGMENT@1663..1669
941 NAME_REF@[1663; 1669) 941 NAME_REF@1663..1669
942 IDENT@[1663; 1669) "assert" 942 IDENT@1663..1669 "assert"
943 BANG@[1669; 1670) "!" 943 BANG@1669..1670 "!"
944 TOKEN_TREE@[1670; 1677) 944 TOKEN_TREE@1670..1677
945 L_PAREN@[1670; 1671) "(" 945 L_PAREN@1670..1671 "("
946 TOKEN_TREE@[1671; 1676) 946 TOKEN_TREE@1671..1676
947 L_PAREN@[1671; 1672) "(" 947 L_PAREN@1671..1672 "("
948 IDENT@[1672; 1673) "p" 948 IDENT@1672..1673 "p"
949 TOKEN_TREE@[1673; 1675) 949 TOKEN_TREE@1673..1675
950 L_PAREN@[1673; 1674) "(" 950 L_PAREN@1673..1674 "("
951 R_PAREN@[1674; 1675) ")" 951 R_PAREN@1674..1675 ")"
952 R_PAREN@[1675; 1676) ")" 952 R_PAREN@1675..1676 ")"
953 R_PAREN@[1676; 1677) ")" 953 R_PAREN@1676..1677 ")"
954 WHITESPACE@[1677; 1678) " " 954 WHITESPACE@1677..1678 " "
955 EQ2@[1678; 1680) "==" 955 EQ2@1678..1680 "=="
956 WHITESPACE@[1680; 1681) " " 956 WHITESPACE@1680..1681 " "
957 TUPLE_EXPR@[1681; 1683) 957 TUPLE_EXPR@1681..1683
958 L_PAREN@[1681; 1682) "(" 958 L_PAREN@1681..1682 "("
959 R_PAREN@[1682; 1683) ")" 959 R_PAREN@1682..1683 ")"
960 R_PAREN@[1683; 1684) ")" 960 R_PAREN@1683..1684 ")"
961 SEMICOLON@[1684; 1685) ";" 961 SEMICOLON@1684..1685 ";"
962 WHITESPACE@[1685; 1690) "\n " 962 WHITESPACE@1685..1690 "\n "
963 LET_STMT@[1690; 1739) 963 LET_STMT@1690..1739
964 LET_KW@[1690; 1693) "let" 964 LET_KW@1690..1693 "let"
965 WHITESPACE@[1693; 1694) " " 965 WHITESPACE@1693..1694 " "
966 BIND_PAT@[1694; 1696) 966 BIND_PAT@1694..1696
967 NAME@[1694; 1696) 967 NAME@1694..1696
968 IDENT@[1694; 1696) "_b" 968 IDENT@1694..1696 "_b"
969 COLON@[1696; 1697) ":" 969 COLON@1696..1697 ":"
970 WHITESPACE@[1697; 1698) " " 970 WHITESPACE@1697..1698 " "
971 PATH_TYPE@[1698; 1702) 971 PATH_TYPE@1698..1702
972 PATH@[1698; 1702) 972 PATH@1698..1702
973 PATH_SEGMENT@[1698; 1702) 973 PATH_SEGMENT@1698..1702
974 NAME_REF@[1698; 1702) 974 NAME_REF@1698..1702
975 IDENT@[1698; 1702) "bool" 975 IDENT@1698..1702 "bool"
976 WHITESPACE@[1702; 1703) " " 976 WHITESPACE@1702..1703 " "
977 EQ@[1703; 1704) "=" 977 EQ@1703..1704 "="
978 WHITESPACE@[1704; 1705) " " 978 WHITESPACE@1704..1705 " "
979 PAREN_EXPR@[1705; 1738) 979 PAREN_EXPR@1705..1738
980 L_PAREN@[1705; 1706) "(" 980 L_PAREN@1705..1706 "("
981 BIN_EXPR@[1706; 1737) 981 BIN_EXPR@1706..1737
982 MACRO_CALL@[1706; 1723) 982 MACRO_CALL@1706..1723
983 PATH@[1706; 1713) 983 PATH@1706..1713
984 PATH_SEGMENT@[1706; 1713) 984 PATH_SEGMENT@1706..1713
985 NAME_REF@[1706; 1713) 985 NAME_REF@1706..1713
986 IDENT@[1706; 1713) "println" 986 IDENT@1706..1713 "println"
987 BANG@[1713; 1714) "!" 987 BANG@1713..1714 "!"
988 TOKEN_TREE@[1714; 1723) 988 TOKEN_TREE@1714..1723
989 L_PAREN@[1714; 1715) "(" 989 L_PAREN@1714..1715 "("
990 STRING@[1715; 1719) "\"{}\"" 990 STRING@1715..1719 "\"{}\""
991 COMMA@[1719; 1720) "," 991 COMMA@1719..1720 ","
992 WHITESPACE@[1720; 1721) " " 992 WHITESPACE@1720..1721 " "
993 INT_NUMBER@[1721; 1722) "0" 993 INT_NUMBER@1721..1722 "0"
994 R_PAREN@[1722; 1723) ")" 994 R_PAREN@1722..1723 ")"
995 WHITESPACE@[1723; 1724) " " 995 WHITESPACE@1723..1724 " "
996 EQ2@[1724; 1726) "==" 996 EQ2@1724..1726 "=="
997 WHITESPACE@[1726; 1727) " " 997 WHITESPACE@1726..1727 " "
998 PAREN_EXPR@[1727; 1737) 998 PAREN_EXPR@1727..1737
999 L_PAREN@[1727; 1728) "(" 999 L_PAREN@1727..1728 "("
1000 RETURN_EXPR@[1728; 1736) 1000 RETURN_EXPR@1728..1736
1001 RETURN_KW@[1728; 1734) "return" 1001 RETURN_KW@1728..1734 "return"
1002 WHITESPACE@[1734; 1735) " " 1002 WHITESPACE@1734..1735 " "
1003 LITERAL@[1735; 1736) 1003 LITERAL@1735..1736
1004 INT_NUMBER@[1735; 1736) "0" 1004 INT_NUMBER@1735..1736 "0"
1005 R_PAREN@[1736; 1737) ")" 1005 R_PAREN@1736..1737 ")"
1006 R_PAREN@[1737; 1738) ")" 1006 R_PAREN@1737..1738 ")"
1007 SEMICOLON@[1738; 1739) ";" 1007 SEMICOLON@1738..1739 ";"
1008 WHITESPACE@[1739; 1740) "\n" 1008 WHITESPACE@1739..1740 "\n"
1009 R_CURLY@[1740; 1741) "}" 1009 R_CURLY@1740..1741 "}"
1010 WHITESPACE@[1741; 1743) "\n\n" 1010 WHITESPACE@1741..1743 "\n\n"
1011 FN_DEF@[1743; 1904) 1011 FN_DEF@1743..1904
1012 FN_KW@[1743; 1745) "fn" 1012 FN_KW@1743..1745 "fn"
1013 WHITESPACE@[1745; 1746) " " 1013 WHITESPACE@1745..1746 " "
1014 NAME@[1746; 1755) 1014 NAME@1746..1755
1015 IDENT@[1746; 1755) "angrydome" 1015 IDENT@1746..1755 "angrydome"
1016 PARAM_LIST@[1755; 1757) 1016 PARAM_LIST@1755..1757
1017 L_PAREN@[1755; 1756) "(" 1017 L_PAREN@1755..1756 "("
1018 R_PAREN@[1756; 1757) ")" 1018 R_PAREN@1756..1757 ")"
1019 WHITESPACE@[1757; 1758) " " 1019 WHITESPACE@1757..1758 " "
1020 BLOCK_EXPR@[1758; 1904) 1020 BLOCK_EXPR@1758..1904
1021 BLOCK@[1758; 1904) 1021 BLOCK@1758..1904
1022 L_CURLY@[1758; 1759) "{" 1022 L_CURLY@1758..1759 "{"
1023 WHITESPACE@[1759; 1764) "\n " 1023 WHITESPACE@1759..1764 "\n "
1024 EXPR_STMT@[1764; 1785) 1024 EXPR_STMT@1764..1785
1025 LOOP_EXPR@[1764; 1785) 1025 LOOP_EXPR@1764..1785
1026 LOOP_KW@[1764; 1768) "loop" 1026 LOOP_KW@1764..1768 "loop"
1027 WHITESPACE@[1768; 1769) " " 1027 WHITESPACE@1768..1769 " "
1028 BLOCK_EXPR@[1769; 1785) 1028 BLOCK_EXPR@1769..1785
1029 BLOCK@[1769; 1785) 1029 BLOCK@1769..1785
1030 L_CURLY@[1769; 1770) "{" 1030 L_CURLY@1769..1770 "{"
1031 WHITESPACE@[1770; 1771) " " 1031 WHITESPACE@1770..1771 " "
1032 IF_EXPR@[1771; 1783) 1032 IF_EXPR@1771..1783
1033 IF_KW@[1771; 1773) "if" 1033 IF_KW@1771..1773 "if"
1034 WHITESPACE@[1773; 1774) " " 1034 WHITESPACE@1773..1774 " "
1035 CONDITION@[1774; 1779) 1035 CONDITION@1774..1779
1036 BREAK_EXPR@[1774; 1779) 1036 BREAK_EXPR@1774..1779
1037 BREAK_KW@[1774; 1779) "break" 1037 BREAK_KW@1774..1779 "break"
1038 WHITESPACE@[1779; 1780) " " 1038 WHITESPACE@1779..1780 " "
1039 BLOCK_EXPR@[1780; 1783) 1039 BLOCK_EXPR@1780..1783
1040 BLOCK@[1780; 1783) 1040 BLOCK@1780..1783
1041 L_CURLY@[1780; 1781) "{" 1041 L_CURLY@1780..1781 "{"
1042 WHITESPACE@[1781; 1782) " " 1042 WHITESPACE@1781..1782 " "
1043 R_CURLY@[1782; 1783) "}" 1043 R_CURLY@1782..1783 "}"
1044 WHITESPACE@[1783; 1784) " " 1044 WHITESPACE@1783..1784 " "
1045 R_CURLY@[1784; 1785) "}" 1045 R_CURLY@1784..1785 "}"
1046 WHITESPACE@[1785; 1790) "\n " 1046 WHITESPACE@1785..1790 "\n "
1047 LET_STMT@[1790; 1804) 1047 LET_STMT@1790..1804
1048 LET_KW@[1790; 1793) "let" 1048 LET_KW@1790..1793 "let"
1049 WHITESPACE@[1793; 1794) " " 1049 WHITESPACE@1793..1794 " "
1050 BIND_PAT@[1794; 1799) 1050 BIND_PAT@1794..1799
1051 MUT_KW@[1794; 1797) "mut" 1051 MUT_KW@1794..1797 "mut"
1052 WHITESPACE@[1797; 1798) " " 1052 WHITESPACE@1797..1798 " "
1053 NAME@[1798; 1799) 1053 NAME@1798..1799
1054 IDENT@[1798; 1799) "i" 1054 IDENT@1798..1799 "i"
1055 WHITESPACE@[1799; 1800) " " 1055 WHITESPACE@1799..1800 " "
1056 EQ@[1800; 1801) "=" 1056 EQ@1800..1801 "="
1057 WHITESPACE@[1801; 1802) " " 1057 WHITESPACE@1801..1802 " "
1058 LITERAL@[1802; 1803) 1058 LITERAL@1802..1803
1059 INT_NUMBER@[1802; 1803) "0" 1059 INT_NUMBER@1802..1803 "0"
1060 SEMICOLON@[1803; 1804) ";" 1060 SEMICOLON@1803..1804 ";"
1061 WHITESPACE@[1804; 1809) "\n " 1061 WHITESPACE@1804..1809 "\n "
1062 LOOP_EXPR@[1809; 1902) 1062 LOOP_EXPR@1809..1902
1063 LOOP_KW@[1809; 1813) "loop" 1063 LOOP_KW@1809..1813 "loop"
1064 WHITESPACE@[1813; 1814) " " 1064 WHITESPACE@1813..1814 " "
1065 BLOCK_EXPR@[1814; 1902) 1065 BLOCK_EXPR@1814..1902
1066 BLOCK@[1814; 1902) 1066 BLOCK@1814..1902
1067 L_CURLY@[1814; 1815) "{" 1067 L_CURLY@1814..1815 "{"
1068 WHITESPACE@[1815; 1816) " " 1068 WHITESPACE@1815..1816 " "
1069 EXPR_STMT@[1816; 1823) 1069 EXPR_STMT@1816..1823
1070 BIN_EXPR@[1816; 1822) 1070 BIN_EXPR@1816..1822
1071 PATH_EXPR@[1816; 1817) 1071 PATH_EXPR@1816..1817
1072 PATH@[1816; 1817) 1072 PATH@1816..1817
1073 PATH_SEGMENT@[1816; 1817) 1073 PATH_SEGMENT@1816..1817
1074 NAME_REF@[1816; 1817) 1074 NAME_REF@1816..1817
1075 IDENT@[1816; 1817) "i" 1075 IDENT@1816..1817 "i"
1076 WHITESPACE@[1817; 1818) " " 1076 WHITESPACE@1817..1818 " "
1077 PLUSEQ@[1818; 1820) "+=" 1077 PLUSEQ@1818..1820 "+="
1078 WHITESPACE@[1820; 1821) " " 1078 WHITESPACE@1820..1821 " "
1079 LITERAL@[1821; 1822) 1079 LITERAL@1821..1822
1080 INT_NUMBER@[1821; 1822) "1" 1080 INT_NUMBER@1821..1822 "1"
1081 SEMICOLON@[1822; 1823) ";" 1081 SEMICOLON@1822..1823 ";"
1082 WHITESPACE@[1823; 1824) " " 1082 WHITESPACE@1823..1824 " "
1083 EXPR_STMT@[1824; 1887) 1083 EXPR_STMT@1824..1887
1084 IF_EXPR@[1824; 1887) 1084 IF_EXPR@1824..1887
1085 IF_KW@[1824; 1826) "if" 1085 IF_KW@1824..1826 "if"
1086 WHITESPACE@[1826; 1827) " " 1086 WHITESPACE@1826..1827 " "
1087 CONDITION@[1827; 1833) 1087 CONDITION@1827..1833
1088 BIN_EXPR@[1827; 1833) 1088 BIN_EXPR@1827..1833
1089 PATH_EXPR@[1827; 1828) 1089 PATH_EXPR@1827..1828
1090 PATH@[1827; 1828) 1090 PATH@1827..1828
1091 PATH_SEGMENT@[1827; 1828) 1091 PATH_SEGMENT@1827..1828
1092 NAME_REF@[1827; 1828) 1092 NAME_REF@1827..1828
1093 IDENT@[1827; 1828) "i" 1093 IDENT@1827..1828 "i"
1094 WHITESPACE@[1828; 1829) " " 1094 WHITESPACE@1828..1829 " "
1095 EQ2@[1829; 1831) "==" 1095 EQ2@1829..1831 "=="
1096 WHITESPACE@[1831; 1832) " " 1096 WHITESPACE@1831..1832 " "
1097 LITERAL@[1832; 1833) 1097 LITERAL@1832..1833
1098 INT_NUMBER@[1832; 1833) "1" 1098 INT_NUMBER@1832..1833 "1"
1099 WHITESPACE@[1833; 1834) " " 1099 WHITESPACE@1833..1834 " "
1100 BLOCK_EXPR@[1834; 1887) 1100 BLOCK_EXPR@1834..1887
1101 BLOCK@[1834; 1887) 1101 BLOCK@1834..1887
1102 L_CURLY@[1834; 1835) "{" 1102 L_CURLY@1834..1835 "{"
1103 WHITESPACE@[1835; 1836) " " 1103 WHITESPACE@1835..1836 " "
1104 MATCH_EXPR@[1836; 1885) 1104 MATCH_EXPR@1836..1885
1105 MATCH_KW@[1836; 1841) "match" 1105 MATCH_KW@1836..1841 "match"
1106 WHITESPACE@[1841; 1842) " " 1106 WHITESPACE@1841..1842 " "
1107 PAREN_EXPR@[1842; 1852) 1107 PAREN_EXPR@1842..1852
1108 L_PAREN@[1842; 1843) "(" 1108 L_PAREN@1842..1843 "("
1109 CONTINUE_EXPR@[1843; 1851) 1109 CONTINUE_EXPR@1843..1851
1110 CONTINUE_KW@[1843; 1851) "continue" 1110 CONTINUE_KW@1843..1851 "continue"
1111 R_PAREN@[1851; 1852) ")" 1111 R_PAREN@1851..1852 ")"
1112 WHITESPACE@[1852; 1853) " " 1112 WHITESPACE@1852..1853 " "
1113 MATCH_ARM_LIST@[1853; 1885) 1113 MATCH_ARM_LIST@1853..1885
1114 L_CURLY@[1853; 1854) "{" 1114 L_CURLY@1853..1854 "{"
1115 WHITESPACE@[1854; 1855) " " 1115 WHITESPACE@1854..1855 " "
1116 MATCH_ARM@[1855; 1863) 1116 MATCH_ARM@1855..1863
1117 LITERAL_PAT@[1855; 1856) 1117 LITERAL_PAT@1855..1856
1118 LITERAL@[1855; 1856) 1118 LITERAL@1855..1856
1119 INT_NUMBER@[1855; 1856) "1" 1119 INT_NUMBER@1855..1856 "1"
1120 WHITESPACE@[1856; 1857) " " 1120 WHITESPACE@1856..1857 " "
1121 FAT_ARROW@[1857; 1859) "=>" 1121 FAT_ARROW@1857..1859 "=>"
1122 WHITESPACE@[1859; 1860) " " 1122 WHITESPACE@1859..1860 " "
1123 BLOCK_EXPR@[1860; 1863) 1123 BLOCK_EXPR@1860..1863
1124 BLOCK@[1860; 1863) 1124 BLOCK@1860..1863
1125 L_CURLY@[1860; 1861) "{" 1125 L_CURLY@1860..1861 "{"
1126 WHITESPACE@[1861; 1862) " " 1126 WHITESPACE@1861..1862 " "
1127 R_CURLY@[1862; 1863) "}" 1127 R_CURLY@1862..1863 "}"
1128 COMMA@[1863; 1864) "," 1128 COMMA@1863..1864 ","
1129 WHITESPACE@[1864; 1865) " " 1129 WHITESPACE@1864..1865 " "
1130 MATCH_ARM@[1865; 1883) 1130 MATCH_ARM@1865..1883
1131 PLACEHOLDER_PAT@[1865; 1866) 1131 PLACEHOLDER_PAT@1865..1866
1132 UNDERSCORE@[1865; 1866) "_" 1132 UNDERSCORE@1865..1866 "_"
1133 WHITESPACE@[1866; 1867) " " 1133 WHITESPACE@1866..1867 " "
1134 FAT_ARROW@[1867; 1869) "=>" 1134 FAT_ARROW@1867..1869 "=>"
1135 WHITESPACE@[1869; 1870) " " 1135 WHITESPACE@1869..1870 " "
1136 MACRO_CALL@[1870; 1883) 1136 MACRO_CALL@1870..1883
1137 PATH@[1870; 1875) 1137 PATH@1870..1875
1138 PATH_SEGMENT@[1870; 1875) 1138 PATH_SEGMENT@1870..1875
1139 NAME_REF@[1870; 1875) 1139 NAME_REF@1870..1875
1140 IDENT@[1870; 1875) "panic" 1140 IDENT@1870..1875 "panic"
1141 BANG@[1875; 1876) "!" 1141 BANG@1875..1876 "!"
1142 TOKEN_TREE@[1876; 1883) 1142 TOKEN_TREE@1876..1883
1143 L_PAREN@[1876; 1877) "(" 1143 L_PAREN@1876..1877 "("
1144 STRING@[1877; 1882) "\"wat\"" 1144 STRING@1877..1882 "\"wat\""
1145 R_PAREN@[1882; 1883) ")" 1145 R_PAREN@1882..1883 ")"
1146 WHITESPACE@[1883; 1884) " " 1146 WHITESPACE@1883..1884 " "
1147 R_CURLY@[1884; 1885) "}" 1147 R_CURLY@1884..1885 "}"
1148 WHITESPACE@[1885; 1886) " " 1148 WHITESPACE@1885..1886 " "
1149 R_CURLY@[1886; 1887) "}" 1149 R_CURLY@1886..1887 "}"
1150 WHITESPACE@[1887; 1894) "\n " 1150 WHITESPACE@1887..1894 "\n "
1151 EXPR_STMT@[1894; 1900) 1151 EXPR_STMT@1894..1900
1152 BREAK_EXPR@[1894; 1899) 1152 BREAK_EXPR@1894..1899
1153 BREAK_KW@[1894; 1899) "break" 1153 BREAK_KW@1894..1899 "break"
1154 SEMICOLON@[1899; 1900) ";" 1154 SEMICOLON@1899..1900 ";"
1155 WHITESPACE@[1900; 1901) " " 1155 WHITESPACE@1900..1901 " "
1156 R_CURLY@[1901; 1902) "}" 1156 R_CURLY@1901..1902 "}"
1157 WHITESPACE@[1902; 1903) "\n" 1157 WHITESPACE@1902..1903 "\n"
1158 R_CURLY@[1903; 1904) "}" 1158 R_CURLY@1903..1904 "}"
1159 WHITESPACE@[1904; 1906) "\n\n" 1159 WHITESPACE@1904..1906 "\n\n"
1160 FN_DEF@[1906; 1960) 1160 FN_DEF@1906..1960
1161 FN_KW@[1906; 1908) "fn" 1161 FN_KW@1906..1908 "fn"
1162 WHITESPACE@[1908; 1909) " " 1162 WHITESPACE@1908..1909 " "
1163 NAME@[1909; 1921) 1163 NAME@1909..1921
1164 IDENT@[1909; 1921) "evil_lincoln" 1164 IDENT@1909..1921 "evil_lincoln"
1165 PARAM_LIST@[1921; 1923) 1165 PARAM_LIST@1921..1923
1166 L_PAREN@[1921; 1922) "(" 1166 L_PAREN@1921..1922 "("
1167 R_PAREN@[1922; 1923) ")" 1167 R_PAREN@1922..1923 ")"
1168 WHITESPACE@[1923; 1924) " " 1168 WHITESPACE@1923..1924 " "
1169 BLOCK_EXPR@[1924; 1960) 1169 BLOCK_EXPR@1924..1960
1170 BLOCK@[1924; 1960) 1170 BLOCK@1924..1960
1171 L_CURLY@[1924; 1925) "{" 1171 L_CURLY@1924..1925 "{"
1172 WHITESPACE@[1925; 1926) " " 1172 WHITESPACE@1925..1926 " "
1173 LET_STMT@[1926; 1958) 1173 LET_STMT@1926..1958
1174 LET_KW@[1926; 1929) "let" 1174 LET_KW@1926..1929 "let"
1175 WHITESPACE@[1929; 1930) " " 1175 WHITESPACE@1929..1930 " "
1176 BIND_PAT@[1930; 1935) 1176 BIND_PAT@1930..1935
1177 NAME@[1930; 1935) 1177 NAME@1930..1935
1178 IDENT@[1930; 1935) "_evil" 1178 IDENT@1930..1935 "_evil"
1179 WHITESPACE@[1935; 1936) " " 1179 WHITESPACE@1935..1936 " "
1180 EQ@[1936; 1937) "=" 1180 EQ@1936..1937 "="
1181 WHITESPACE@[1937; 1938) " " 1181 WHITESPACE@1937..1938 " "
1182 MACRO_CALL@[1938; 1957) 1182 MACRO_CALL@1938..1957
1183 PATH@[1938; 1945) 1183 PATH@1938..1945
1184 PATH_SEGMENT@[1938; 1945) 1184 PATH_SEGMENT@1938..1945
1185 NAME_REF@[1938; 1945) 1185 NAME_REF@1938..1945
1186 IDENT@[1938; 1945) "println" 1186 IDENT@1938..1945 "println"
1187 BANG@[1945; 1946) "!" 1187 BANG@1945..1946 "!"
1188 TOKEN_TREE@[1946; 1957) 1188 TOKEN_TREE@1946..1957
1189 L_PAREN@[1946; 1947) "(" 1189 L_PAREN@1946..1947 "("
1190 STRING@[1947; 1956) "\"lincoln\"" 1190 STRING@1947..1956 "\"lincoln\""
1191 R_PAREN@[1956; 1957) ")" 1191 R_PAREN@1956..1957 ")"
1192 SEMICOLON@[1957; 1958) ";" 1192 SEMICOLON@1957..1958 ";"
1193 WHITESPACE@[1958; 1959) " " 1193 WHITESPACE@1958..1959 " "
1194 R_CURLY@[1959; 1960) "}" 1194 R_CURLY@1959..1960 "}"
1195 WHITESPACE@[1960; 1962) "\n\n" 1195 WHITESPACE@1960..1962 "\n\n"
1196 FN_DEF@[1962; 2198) 1196 FN_DEF@1962..2198
1197 FN_KW@[1962; 1964) "fn" 1197 FN_KW@1962..1964 "fn"
1198 WHITESPACE@[1964; 1965) " " 1198 WHITESPACE@1964..1965 " "
1199 NAME@[1965; 1969) 1199 NAME@1965..1969
1200 IDENT@[1965; 1969) "dots" 1200 IDENT@1965..1969 "dots"
1201 PARAM_LIST@[1969; 1971) 1201 PARAM_LIST@1969..1971
1202 L_PAREN@[1969; 1970) "(" 1202 L_PAREN@1969..1970 "("
1203 R_PAREN@[1970; 1971) ")" 1203 R_PAREN@1970..1971 ")"
1204 WHITESPACE@[1971; 1972) " " 1204 WHITESPACE@1971..1972 " "
1205 BLOCK_EXPR@[1972; 2198) 1205 BLOCK_EXPR@1972..2198
1206 BLOCK@[1972; 2198) 1206 BLOCK@1972..2198
1207 L_CURLY@[1972; 1973) "{" 1207 L_CURLY@1972..1973 "{"
1208 WHITESPACE@[1973; 1978) "\n " 1208 WHITESPACE@1973..1978 "\n "
1209 EXPR_STMT@[1978; 2196) 1209 EXPR_STMT@1978..2196
1210 MACRO_CALL@[1978; 2195) 1210 MACRO_CALL@1978..2195
1211 PATH@[1978; 1987) 1211 PATH@1978..1987
1212 PATH_SEGMENT@[1978; 1987) 1212 PATH_SEGMENT@1978..1987
1213 NAME_REF@[1978; 1987) 1213 NAME_REF@1978..1987
1214 IDENT@[1978; 1987) "assert_eq" 1214 IDENT@1978..1987 "assert_eq"
1215 BANG@[1987; 1988) "!" 1215 BANG@1987..1988 "!"
1216 TOKEN_TREE@[1988; 2195) 1216 TOKEN_TREE@1988..2195
1217 L_PAREN@[1988; 1989) "(" 1217 L_PAREN@1988..1989 "("
1218 IDENT@[1989; 1995) "String" 1218 IDENT@1989..1995 "String"
1219 COLON@[1995; 1996) ":" 1219 COLON@1995..1996 ":"
1220 COLON@[1996; 1997) ":" 1220 COLON@1996..1997 ":"
1221 IDENT@[1997; 2001) "from" 1221 IDENT@1997..2001 "from"
1222 TOKEN_TREE@[2001; 2055) 1222 TOKEN_TREE@2001..2055
1223 L_PAREN@[2001; 2002) "(" 1223 L_PAREN@2001..2002 "("
1224 STRING@[2002; 2054) "\".................... ..." 1224 STRING@2002..2054 "\".................... ..."
1225 R_PAREN@[2054; 2055) ")" 1225 R_PAREN@2054..2055 ")"
1226 COMMA@[2055; 2056) "," 1226 COMMA@2055..2056 ","
1227 WHITESPACE@[2056; 2072) "\n " 1227 WHITESPACE@2056..2072 "\n "
1228 IDENT@[2072; 2078) "format" 1228 IDENT@2072..2078 "format"
1229 BANG@[2078; 2079) "!" 1229 BANG@2078..2079 "!"
1230 TOKEN_TREE@[2079; 2194) 1230 TOKEN_TREE@2079..2194
1231 L_PAREN@[2079; 2080) "(" 1231 L_PAREN@2079..2080 "("
1232 STRING@[2080; 2086) "\"{:?}\"" 1232 STRING@2080..2086 "\"{:?}\""
1233 COMMA@[2086; 2087) "," 1233 COMMA@2086..2087 ","
1234 WHITESPACE@[2087; 2088) " " 1234 WHITESPACE@2087..2088 " "
1235 DOT@[2088; 2089) "." 1235 DOT@2088..2089 "."
1236 DOT@[2089; 2090) "." 1236 DOT@2089..2090 "."
1237 WHITESPACE@[2090; 2091) " " 1237 WHITESPACE@2090..2091 " "
1238 DOT@[2091; 2092) "." 1238 DOT@2091..2092 "."
1239 DOT@[2092; 2093) "." 1239 DOT@2092..2093 "."
1240 WHITESPACE@[2093; 2094) " " 1240 WHITESPACE@2093..2094 " "
1241 DOT@[2094; 2095) "." 1241 DOT@2094..2095 "."
1242 DOT@[2095; 2096) "." 1242 DOT@2095..2096 "."
1243 WHITESPACE@[2096; 2097) " " 1243 WHITESPACE@2096..2097 " "
1244 DOT@[2097; 2098) "." 1244 DOT@2097..2098 "."
1245 DOT@[2098; 2099) "." 1245 DOT@2098..2099 "."
1246 WHITESPACE@[2099; 2100) " " 1246 WHITESPACE@2099..2100 " "
1247 DOT@[2100; 2101) "." 1247 DOT@2100..2101 "."
1248 DOT@[2101; 2102) "." 1248 DOT@2101..2102 "."
1249 WHITESPACE@[2102; 2103) " " 1249 WHITESPACE@2102..2103 " "
1250 DOT@[2103; 2104) "." 1250 DOT@2103..2104 "."
1251 DOT@[2104; 2105) "." 1251 DOT@2104..2105 "."
1252 WHITESPACE@[2105; 2106) " " 1252 WHITESPACE@2105..2106 " "
1253 DOT@[2106; 2107) "." 1253 DOT@2106..2107 "."
1254 DOT@[2107; 2108) "." 1254 DOT@2107..2108 "."
1255 WHITESPACE@[2108; 2109) " " 1255 WHITESPACE@2108..2109 " "
1256 DOT@[2109; 2110) "." 1256 DOT@2109..2110 "."
1257 DOT@[2110; 2111) "." 1257 DOT@2110..2111 "."
1258 WHITESPACE@[2111; 2112) " " 1258 WHITESPACE@2111..2112 " "
1259 DOT@[2112; 2113) "." 1259 DOT@2112..2113 "."
1260 DOT@[2113; 2114) "." 1260 DOT@2113..2114 "."
1261 WHITESPACE@[2114; 2115) " " 1261 WHITESPACE@2114..2115 " "
1262 DOT@[2115; 2116) "." 1262 DOT@2115..2116 "."
1263 DOT@[2116; 2117) "." 1263 DOT@2116..2117 "."
1264 WHITESPACE@[2117; 2118) " " 1264 WHITESPACE@2117..2118 " "
1265 DOT@[2118; 2119) "." 1265 DOT@2118..2119 "."
1266 DOT@[2119; 2120) "." 1266 DOT@2119..2120 "."
1267 WHITESPACE@[2120; 2121) " " 1267 WHITESPACE@2120..2121 " "
1268 DOT@[2121; 2122) "." 1268 DOT@2121..2122 "."
1269 DOT@[2122; 2123) "." 1269 DOT@2122..2123 "."
1270 WHITESPACE@[2123; 2124) " " 1270 WHITESPACE@2123..2124 " "
1271 DOT@[2124; 2125) "." 1271 DOT@2124..2125 "."
1272 DOT@[2125; 2126) "." 1272 DOT@2125..2126 "."
1273 WHITESPACE@[2126; 2158) "\n ..." 1273 WHITESPACE@2126..2158 "\n ..."
1274 DOT@[2158; 2159) "." 1274 DOT@2158..2159 "."
1275 DOT@[2159; 2160) "." 1275 DOT@2159..2160 "."
1276 WHITESPACE@[2160; 2161) " " 1276 WHITESPACE@2160..2161 " "
1277 DOT@[2161; 2162) "." 1277 DOT@2161..2162 "."
1278 DOT@[2162; 2163) "." 1278 DOT@2162..2163 "."
1279 WHITESPACE@[2163; 2164) " " 1279 WHITESPACE@2163..2164 " "
1280 DOT@[2164; 2165) "." 1280 DOT@2164..2165 "."
1281 DOT@[2165; 2166) "." 1281 DOT@2165..2166 "."
1282 WHITESPACE@[2166; 2167) " " 1282 WHITESPACE@2166..2167 " "
1283 DOT@[2167; 2168) "." 1283 DOT@2167..2168 "."
1284 DOT@[2168; 2169) "." 1284 DOT@2168..2169 "."
1285 WHITESPACE@[2169; 2170) " " 1285 WHITESPACE@2169..2170 " "
1286 DOT@[2170; 2171) "." 1286 DOT@2170..2171 "."
1287 DOT@[2171; 2172) "." 1287 DOT@2171..2172 "."
1288 WHITESPACE@[2172; 2173) " " 1288 WHITESPACE@2172..2173 " "
1289 DOT@[2173; 2174) "." 1289 DOT@2173..2174 "."
1290 DOT@[2174; 2175) "." 1290 DOT@2174..2175 "."
1291 WHITESPACE@[2175; 2176) " " 1291 WHITESPACE@2175..2176 " "
1292 DOT@[2176; 2177) "." 1292 DOT@2176..2177 "."
1293 DOT@[2177; 2178) "." 1293 DOT@2177..2178 "."
1294 WHITESPACE@[2178; 2179) " " 1294 WHITESPACE@2178..2179 " "
1295 DOT@[2179; 2180) "." 1295 DOT@2179..2180 "."
1296 DOT@[2180; 2181) "." 1296 DOT@2180..2181 "."
1297 WHITESPACE@[2181; 2182) " " 1297 WHITESPACE@2181..2182 " "
1298 DOT@[2182; 2183) "." 1298 DOT@2182..2183 "."
1299 DOT@[2183; 2184) "." 1299 DOT@2183..2184 "."
1300 WHITESPACE@[2184; 2185) " " 1300 WHITESPACE@2184..2185 " "
1301 DOT@[2185; 2186) "." 1301 DOT@2185..2186 "."
1302 DOT@[2186; 2187) "." 1302 DOT@2186..2187 "."
1303 WHITESPACE@[2187; 2188) " " 1303 WHITESPACE@2187..2188 " "
1304 DOT@[2188; 2189) "." 1304 DOT@2188..2189 "."
1305 DOT@[2189; 2190) "." 1305 DOT@2189..2190 "."
1306 WHITESPACE@[2190; 2191) " " 1306 WHITESPACE@2190..2191 " "
1307 DOT@[2191; 2192) "." 1307 DOT@2191..2192 "."
1308 DOT@[2192; 2193) "." 1308 DOT@2192..2193 "."
1309 R_PAREN@[2193; 2194) ")" 1309 R_PAREN@2193..2194 ")"
1310 R_PAREN@[2194; 2195) ")" 1310 R_PAREN@2194..2195 ")"
1311 SEMICOLON@[2195; 2196) ";" 1311 SEMICOLON@2195..2196 ";"
1312 WHITESPACE@[2196; 2197) "\n" 1312 WHITESPACE@2196..2197 "\n"
1313 R_CURLY@[2197; 2198) "}" 1313 R_CURLY@2197..2198 "}"
1314 WHITESPACE@[2198; 2200) "\n\n" 1314 WHITESPACE@2198..2200 "\n\n"
1315 FN_DEF@[2200; 2693) 1315 FN_DEF@2200..2693
1316 FN_KW@[2200; 2202) "fn" 1316 FN_KW@2200..2202 "fn"
1317 WHITESPACE@[2202; 2203) " " 1317 WHITESPACE@2202..2203 " "
1318 NAME@[2203; 2205) 1318 NAME@2203..2205
1319 IDENT@[2203; 2205) "u8" 1319 IDENT@2203..2205 "u8"
1320 PARAM_LIST@[2205; 2213) 1320 PARAM_LIST@2205..2213
1321 L_PAREN@[2205; 2206) "(" 1321 L_PAREN@2205..2206 "("
1322 PARAM@[2206; 2212) 1322 PARAM@2206..2212
1323 BIND_PAT@[2206; 2208) 1323 BIND_PAT@2206..2208
1324 NAME@[2206; 2208) 1324 NAME@2206..2208
1325 IDENT@[2206; 2208) "u8" 1325 IDENT@2206..2208 "u8"
1326 COLON@[2208; 2209) ":" 1326 COLON@2208..2209 ":"
1327 WHITESPACE@[2209; 2210) " " 1327 WHITESPACE@2209..2210 " "
1328 PATH_TYPE@[2210; 2212) 1328 PATH_TYPE@2210..2212
1329 PATH@[2210; 2212) 1329 PATH@2210..2212
1330 PATH_SEGMENT@[2210; 2212) 1330 PATH_SEGMENT@2210..2212
1331 NAME_REF@[2210; 2212) 1331 NAME_REF@2210..2212
1332 IDENT@[2210; 2212) "u8" 1332 IDENT@2210..2212 "u8"
1333 R_PAREN@[2212; 2213) ")" 1333 R_PAREN@2212..2213 ")"
1334 WHITESPACE@[2213; 2214) " " 1334 WHITESPACE@2213..2214 " "
1335 BLOCK_EXPR@[2214; 2693) 1335 BLOCK_EXPR@2214..2693
1336 BLOCK@[2214; 2693) 1336 BLOCK@2214..2693
1337 L_CURLY@[2214; 2215) "{" 1337 L_CURLY@2214..2215 "{"
1338 WHITESPACE@[2215; 2220) "\n " 1338 WHITESPACE@2215..2220 "\n "
1339 IF_EXPR@[2220; 2691) 1339 IF_EXPR@2220..2691
1340 IF_KW@[2220; 2222) "if" 1340 IF_KW@2220..2222 "if"
1341 WHITESPACE@[2222; 2223) " " 1341 WHITESPACE@2222..2223 " "
1342 CONDITION@[2223; 2232) 1342 CONDITION@2223..2232
1343 BIN_EXPR@[2223; 2232) 1343 BIN_EXPR@2223..2232
1344 PATH_EXPR@[2223; 2225) 1344 PATH_EXPR@2223..2225
1345 PATH@[2223; 2225) 1345 PATH@2223..2225
1346 PATH_SEGMENT@[2223; 2225) 1346 PATH_SEGMENT@2223..2225
1347 NAME_REF@[2223; 2225) 1347 NAME_REF@2223..2225
1348 IDENT@[2223; 2225) "u8" 1348 IDENT@2223..2225 "u8"
1349 WHITESPACE@[2225; 2226) " " 1349 WHITESPACE@2225..2226 " "
1350 NEQ@[2226; 2228) "!=" 1350 NEQ@2226..2228 "!="
1351 WHITESPACE@[2228; 2229) " " 1351 WHITESPACE@2228..2229 " "
1352 LITERAL@[2229; 2232) 1352 LITERAL@2229..2232
1353 INT_NUMBER@[2229; 2232) "0u8" 1353 INT_NUMBER@2229..2232 "0u8"
1354 WHITESPACE@[2232; 2233) " " 1354 WHITESPACE@2232..2233 " "
1355 BLOCK_EXPR@[2233; 2691) 1355 BLOCK_EXPR@2233..2691
1356 BLOCK@[2233; 2691) 1356 BLOCK@2233..2691
1357 L_CURLY@[2233; 2234) "{" 1357 L_CURLY@2233..2234 "{"
1358 WHITESPACE@[2234; 2243) "\n " 1358 WHITESPACE@2234..2243 "\n "
1359 EXPR_STMT@[2243; 2685) 1359 EXPR_STMT@2243..2685
1360 MACRO_CALL@[2243; 2684) 1360 MACRO_CALL@2243..2684
1361 PATH@[2243; 2252) 1361 PATH@2243..2252
1362 PATH_SEGMENT@[2243; 2252) 1362 PATH_SEGMENT@2243..2252
1363 NAME_REF@[2243; 2252) 1363 NAME_REF@2243..2252
1364 IDENT@[2243; 2252) "assert_eq" 1364 IDENT@2243..2252 "assert_eq"
1365 BANG@[2252; 2253) "!" 1365 BANG@2252..2253 "!"
1366 TOKEN_TREE@[2253; 2684) 1366 TOKEN_TREE@2253..2684
1367 L_PAREN@[2253; 2254) "(" 1367 L_PAREN@2253..2254 "("
1368 INT_NUMBER@[2254; 2257) "8u8" 1368 INT_NUMBER@2254..2257 "8u8"
1369 COMMA@[2257; 2258) "," 1369 COMMA@2257..2258 ","
1370 WHITESPACE@[2258; 2259) " " 1370 WHITESPACE@2258..2259 " "
1371 TOKEN_TREE@[2259; 2683) 1371 TOKEN_TREE@2259..2683
1372 L_CURLY@[2259; 2260) "{" 1372 L_CURLY@2259..2260 "{"
1373 WHITESPACE@[2260; 2273) "\n " 1373 WHITESPACE@2260..2273 "\n "
1374 IDENT@[2273; 2284) "macro_rules" 1374 IDENT@2273..2284 "macro_rules"
1375 BANG@[2284; 2285) "!" 1375 BANG@2284..2285 "!"
1376 WHITESPACE@[2285; 2286) " " 1376 WHITESPACE@2285..2286 " "
1377 IDENT@[2286; 2288) "u8" 1377 IDENT@2286..2288 "u8"
1378 WHITESPACE@[2288; 2289) " " 1378 WHITESPACE@2288..2289 " "
1379 TOKEN_TREE@[2289; 2567) 1379 TOKEN_TREE@2289..2567
1380 L_CURLY@[2289; 2290) "{" 1380 L_CURLY@2289..2290 "{"
1381 WHITESPACE@[2290; 2307) "\n " 1381 WHITESPACE@2290..2307 "\n "
1382 TOKEN_TREE@[2307; 2311) 1382 TOKEN_TREE@2307..2311
1383 L_PAREN@[2307; 2308) "(" 1383 L_PAREN@2307..2308 "("
1384 IDENT@[2308; 2310) "u8" 1384 IDENT@2308..2310 "u8"
1385 R_PAREN@[2310; 2311) ")" 1385 R_PAREN@2310..2311 ")"
1386 WHITESPACE@[2311; 2312) " " 1386 WHITESPACE@2311..2312 " "
1387 EQ@[2312; 2313) "=" 1387 EQ@2312..2313 "="
1388 R_ANGLE@[2313; 2314) ">" 1388 R_ANGLE@2313..2314 ">"
1389 WHITESPACE@[2314; 2315) " " 1389 WHITESPACE@2314..2315 " "
1390 TOKEN_TREE@[2315; 2552) 1390 TOKEN_TREE@2315..2552
1391 L_CURLY@[2315; 2316) "{" 1391 L_CURLY@2315..2316 "{"
1392 WHITESPACE@[2316; 2337) "\n " 1392 WHITESPACE@2316..2337 "\n "
1393 MOD_KW@[2337; 2340) "mod" 1393 MOD_KW@2337..2340 "mod"
1394 WHITESPACE@[2340; 2341) " " 1394 WHITESPACE@2340..2341 " "
1395 IDENT@[2341; 2343) "u8" 1395 IDENT@2341..2343 "u8"
1396 WHITESPACE@[2343; 2344) " " 1396 WHITESPACE@2343..2344 " "
1397 TOKEN_TREE@[2344; 2534) 1397 TOKEN_TREE@2344..2534
1398 L_CURLY@[2344; 2345) "{" 1398 L_CURLY@2344..2345 "{"
1399 WHITESPACE@[2345; 2370) "\n ..." 1399 WHITESPACE@2345..2370 "\n ..."
1400 PUB_KW@[2370; 2373) "pub" 1400 PUB_KW@2370..2373 "pub"
1401 WHITESPACE@[2373; 2374) " " 1401 WHITESPACE@2373..2374 " "
1402 FN_KW@[2374; 2376) "fn" 1402 FN_KW@2374..2376 "fn"
1403 WHITESPACE@[2376; 2377) " " 1403 WHITESPACE@2376..2377 " "
1404 IDENT@[2377; 2379) "u8" 1404 IDENT@2377..2379 "u8"
1405 L_ANGLE@[2379; 2380) "<" 1405 L_ANGLE@2379..2380 "<"
1406 LIFETIME@[2380; 2383) "\'u8" 1406 LIFETIME@2380..2383 "\'u8"
1407 COLON@[2383; 2384) ":" 1407 COLON@2383..2384 ":"
1408 WHITESPACE@[2384; 2385) " " 1408 WHITESPACE@2384..2385 " "
1409 LIFETIME@[2385; 2388) "\'u8" 1409 LIFETIME@2385..2388 "\'u8"
1410 WHITESPACE@[2388; 2389) " " 1410 WHITESPACE@2388..2389 " "
1411 PLUS@[2389; 2390) "+" 1411 PLUS@2389..2390 "+"
1412 WHITESPACE@[2390; 2391) " " 1412 WHITESPACE@2390..2391 " "
1413 LIFETIME@[2391; 2394) "\'u8" 1413 LIFETIME@2391..2394 "\'u8"
1414 R_ANGLE@[2394; 2395) ">" 1414 R_ANGLE@2394..2395 ">"
1415 TOKEN_TREE@[2395; 2408) 1415 TOKEN_TREE@2395..2408
1416 L_PAREN@[2395; 2396) "(" 1416 L_PAREN@2395..2396 "("
1417 IDENT@[2396; 2398) "u8" 1417 IDENT@2396..2398 "u8"
1418 COLON@[2398; 2399) ":" 1418 COLON@2398..2399 ":"
1419 WHITESPACE@[2399; 2400) " " 1419 WHITESPACE@2399..2400 " "
1420 AMP@[2400; 2401) "&" 1420 AMP@2400..2401 "&"
1421 LIFETIME@[2401; 2404) "\'u8" 1421 LIFETIME@2401..2404 "\'u8"
1422 WHITESPACE@[2404; 2405) " " 1422 WHITESPACE@2404..2405 " "
1423 IDENT@[2405; 2407) "u8" 1423 IDENT@2405..2407 "u8"
1424 R_PAREN@[2407; 2408) ")" 1424 R_PAREN@2407..2408 ")"
1425 WHITESPACE@[2408; 2409) " " 1425 WHITESPACE@2408..2409 " "
1426 MINUS@[2409; 2410) "-" 1426 MINUS@2409..2410 "-"
1427 R_ANGLE@[2410; 2411) ">" 1427 R_ANGLE@2410..2411 ">"
1428 WHITESPACE@[2411; 2412) " " 1428 WHITESPACE@2411..2412 " "
1429 AMP@[2412; 2413) "&" 1429 AMP@2412..2413 "&"
1430 LIFETIME@[2413; 2416) "\'u8" 1430 LIFETIME@2413..2416 "\'u8"
1431 WHITESPACE@[2416; 2417) " " 1431 WHITESPACE@2416..2417 " "
1432 IDENT@[2417; 2419) "u8" 1432 IDENT@2417..2419 "u8"
1433 WHITESPACE@[2419; 2420) " " 1433 WHITESPACE@2419..2420 " "
1434 TOKEN_TREE@[2420; 2512) 1434 TOKEN_TREE@2420..2512
1435 L_CURLY@[2420; 2421) "{" 1435 L_CURLY@2420..2421 "{"
1436 WHITESPACE@[2421; 2450) "\n ..." 1436 WHITESPACE@2421..2450 "\n ..."
1437 STRING@[2450; 2454) "\"u8\"" 1437 STRING@2450..2454 "\"u8\""
1438 SEMICOLON@[2454; 2455) ";" 1438 SEMICOLON@2454..2455 ";"
1439 WHITESPACE@[2455; 2484) "\n ..." 1439 WHITESPACE@2455..2484 "\n ..."
1440 IDENT@[2484; 2486) "u8" 1440 IDENT@2484..2486 "u8"
1441 WHITESPACE@[2486; 2511) "\n ..." 1441 WHITESPACE@2486..2511 "\n ..."
1442 R_CURLY@[2511; 2512) "}" 1442 R_CURLY@2511..2512 "}"
1443 WHITESPACE@[2512; 2533) "\n " 1443 WHITESPACE@2512..2533 "\n "
1444 R_CURLY@[2533; 2534) "}" 1444 R_CURLY@2533..2534 "}"
1445 WHITESPACE@[2534; 2551) "\n " 1445 WHITESPACE@2534..2551 "\n "
1446 R_CURLY@[2551; 2552) "}" 1446 R_CURLY@2551..2552 "}"
1447 SEMICOLON@[2552; 2553) ";" 1447 SEMICOLON@2552..2553 ";"
1448 WHITESPACE@[2553; 2566) "\n " 1448 WHITESPACE@2553..2566 "\n "
1449 R_CURLY@[2566; 2567) "}" 1449 R_CURLY@2566..2567 "}"
1450 WHITESPACE@[2567; 2581) "\n\n " 1450 WHITESPACE@2567..2581 "\n\n "
1451 IDENT@[2581; 2583) "u8" 1451 IDENT@2581..2583 "u8"
1452 BANG@[2583; 2584) "!" 1452 BANG@2583..2584 "!"
1453 TOKEN_TREE@[2584; 2588) 1453 TOKEN_TREE@2584..2588
1454 L_PAREN@[2584; 2585) "(" 1454 L_PAREN@2584..2585 "("
1455 IDENT@[2585; 2587) "u8" 1455 IDENT@2585..2587 "u8"
1456 R_PAREN@[2587; 2588) ")" 1456 R_PAREN@2587..2588 ")"
1457 SEMICOLON@[2588; 2589) ";" 1457 SEMICOLON@2588..2589 ";"
1458 WHITESPACE@[2589; 2602) "\n " 1458 WHITESPACE@2589..2602 "\n "
1459 LET_KW@[2602; 2605) "let" 1459 LET_KW@2602..2605 "let"
1460 WHITESPACE@[2605; 2606) " " 1460 WHITESPACE@2605..2606 " "
1461 AMP@[2606; 2607) "&" 1461 AMP@2606..2607 "&"
1462 IDENT@[2607; 2609) "u8" 1462 IDENT@2607..2609 "u8"
1463 COLON@[2609; 2610) ":" 1463 COLON@2609..2610 ":"
1464 WHITESPACE@[2610; 2611) " " 1464 WHITESPACE@2610..2611 " "
1465 AMP@[2611; 2612) "&" 1465 AMP@2611..2612 "&"
1466 IDENT@[2612; 2614) "u8" 1466 IDENT@2612..2614 "u8"
1467 WHITESPACE@[2614; 2615) " " 1467 WHITESPACE@2614..2615 " "
1468 EQ@[2615; 2616) "=" 1468 EQ@2615..2616 "="
1469 WHITESPACE@[2616; 2617) " " 1469 WHITESPACE@2616..2617 " "
1470 IDENT@[2617; 2619) "u8" 1470 IDENT@2617..2619 "u8"
1471 COLON@[2619; 2620) ":" 1471 COLON@2619..2620 ":"
1472 COLON@[2620; 2621) ":" 1472 COLON@2620..2621 ":"
1473 IDENT@[2621; 2623) "u8" 1473 IDENT@2621..2623 "u8"
1474 TOKEN_TREE@[2623; 2629) 1474 TOKEN_TREE@2623..2629
1475 L_PAREN@[2623; 2624) "(" 1475 L_PAREN@2623..2624 "("
1476 AMP@[2624; 2625) "&" 1476 AMP@2624..2625 "&"
1477 INT_NUMBER@[2625; 2628) "8u8" 1477 INT_NUMBER@2625..2628 "8u8"
1478 R_PAREN@[2628; 2629) ")" 1478 R_PAREN@2628..2629 ")"
1479 SEMICOLON@[2629; 2630) ";" 1479 SEMICOLON@2629..2630 ";"
1480 WHITESPACE@[2630; 2643) "\n " 1480 WHITESPACE@2630..2643 "\n "
1481 CRATE_KW@[2643; 2648) "crate" 1481 CRATE_KW@2643..2648 "crate"
1482 COLON@[2648; 2649) ":" 1482 COLON@2648..2649 ":"
1483 COLON@[2649; 2650) ":" 1483 COLON@2649..2650 ":"
1484 IDENT@[2650; 2652) "u8" 1484 IDENT@2650..2652 "u8"
1485 TOKEN_TREE@[2652; 2657) 1485 TOKEN_TREE@2652..2657
1486 L_PAREN@[2652; 2653) "(" 1486 L_PAREN@2652..2653 "("
1487 INT_NUMBER@[2653; 2656) "0u8" 1487 INT_NUMBER@2653..2656 "0u8"
1488 R_PAREN@[2656; 2657) ")" 1488 R_PAREN@2656..2657 ")"
1489 SEMICOLON@[2657; 2658) ";" 1489 SEMICOLON@2657..2658 ";"
1490 WHITESPACE@[2658; 2671) "\n " 1490 WHITESPACE@2658..2671 "\n "
1491 IDENT@[2671; 2673) "u8" 1491 IDENT@2671..2673 "u8"
1492 WHITESPACE@[2673; 2682) "\n " 1492 WHITESPACE@2673..2682 "\n "
1493 R_CURLY@[2682; 2683) "}" 1493 R_CURLY@2682..2683 "}"
1494 R_PAREN@[2683; 2684) ")" 1494 R_PAREN@2683..2684 ")"
1495 SEMICOLON@[2684; 2685) ";" 1495 SEMICOLON@2684..2685 ";"
1496 WHITESPACE@[2685; 2690) "\n " 1496 WHITESPACE@2685..2690 "\n "
1497 R_CURLY@[2690; 2691) "}" 1497 R_CURLY@2690..2691 "}"
1498 WHITESPACE@[2691; 2692) "\n" 1498 WHITESPACE@2691..2692 "\n"
1499 R_CURLY@[2692; 2693) "}" 1499 R_CURLY@2692..2693 "}"
1500 WHITESPACE@[2693; 2695) "\n\n" 1500 WHITESPACE@2693..2695 "\n\n"
1501 FN_DEF@[2695; 2832) 1501 FN_DEF@2695..2832
1502 FN_KW@[2695; 2697) "fn" 1502 FN_KW@2695..2697 "fn"
1503 WHITESPACE@[2697; 2698) " " 1503 WHITESPACE@2697..2698 " "
1504 NAME@[2698; 2703) 1504 NAME@2698..2703
1505 IDENT@[2698; 2703) "fishy" 1505 IDENT@2698..2703 "fishy"
1506 PARAM_LIST@[2703; 2705) 1506 PARAM_LIST@2703..2705
1507 L_PAREN@[2703; 2704) "(" 1507 L_PAREN@2703..2704 "("
1508 R_PAREN@[2704; 2705) ")" 1508 R_PAREN@2704..2705 ")"
1509 WHITESPACE@[2705; 2706) " " 1509 WHITESPACE@2705..2706 " "
1510 BLOCK_EXPR@[2706; 2832) 1510 BLOCK_EXPR@2706..2832
1511 BLOCK@[2706; 2832) 1511 BLOCK@2706..2832
1512 L_CURLY@[2706; 2707) "{" 1512 L_CURLY@2706..2707 "{"
1513 WHITESPACE@[2707; 2712) "\n " 1513 WHITESPACE@2707..2712 "\n "
1514 EXPR_STMT@[2712; 2830) 1514 EXPR_STMT@2712..2830
1515 MACRO_CALL@[2712; 2829) 1515 MACRO_CALL@2712..2829
1516 PATH@[2712; 2721) 1516 PATH@2712..2721
1517 PATH_SEGMENT@[2712; 2721) 1517 PATH_SEGMENT@2712..2721
1518 NAME_REF@[2712; 2721) 1518 NAME_REF@2712..2721
1519 IDENT@[2712; 2721) "assert_eq" 1519 IDENT@2712..2721 "assert_eq"
1520 BANG@[2721; 2722) "!" 1520 BANG@2721..2722 "!"
1521 TOKEN_TREE@[2722; 2829) 1521 TOKEN_TREE@2722..2829
1522 L_PAREN@[2722; 2723) "(" 1522 L_PAREN@2722..2723 "("
1523 IDENT@[2723; 2729) "String" 1523 IDENT@2723..2729 "String"
1524 COLON@[2729; 2730) ":" 1524 COLON@2729..2730 ":"
1525 COLON@[2730; 2731) ":" 1525 COLON@2730..2731 ":"
1526 IDENT@[2731; 2735) "from" 1526 IDENT@2731..2735 "from"
1527 TOKEN_TREE@[2735; 2742) 1527 TOKEN_TREE@2735..2742
1528 L_PAREN@[2735; 2736) "(" 1528 L_PAREN@2735..2736 "("
1529 STRING@[2736; 2741) "\"><>\"" 1529 STRING@2736..2741 "\"><>\""
1530 R_PAREN@[2741; 2742) ")" 1530 R_PAREN@2741..2742 ")"
1531 COMMA@[2742; 2743) "," 1531 COMMA@2742..2743 ","
1532 WHITESPACE@[2743; 2759) "\n " 1532 WHITESPACE@2743..2759 "\n "
1533 IDENT@[2759; 2765) "String" 1533 IDENT@2759..2765 "String"
1534 COLON@[2765; 2766) ":" 1534 COLON@2765..2766 ":"
1535 COLON@[2766; 2767) ":" 1535 COLON@2766..2767 ":"
1536 L_ANGLE@[2767; 2768) "<" 1536 L_ANGLE@2767..2768 "<"
1537 R_ANGLE@[2768; 2769) ">" 1537 R_ANGLE@2768..2769 ">"
1538 COLON@[2769; 2770) ":" 1538 COLON@2769..2770 ":"
1539 COLON@[2770; 2771) ":" 1539 COLON@2770..2771 ":"
1540 IDENT@[2771; 2775) "from" 1540 IDENT@2771..2775 "from"
1541 COLON@[2775; 2776) ":" 1541 COLON@2775..2776 ":"
1542 COLON@[2776; 2777) ":" 1542 COLON@2776..2777 ":"
1543 L_ANGLE@[2777; 2778) "<" 1543 L_ANGLE@2777..2778 "<"
1544 R_ANGLE@[2778; 2779) ">" 1544 R_ANGLE@2778..2779 ">"
1545 TOKEN_TREE@[2779; 2786) 1545 TOKEN_TREE@2779..2786
1546 L_PAREN@[2779; 2780) "(" 1546 L_PAREN@2779..2780 "("
1547 STRING@[2780; 2785) "\"><>\"" 1547 STRING@2780..2785 "\"><>\""
1548 R_PAREN@[2785; 2786) ")" 1548 R_PAREN@2785..2786 ")"
1549 DOT@[2786; 2787) "." 1549 DOT@2786..2787 "."
1550 IDENT@[2787; 2792) "chars" 1550 IDENT@2787..2792 "chars"
1551 COLON@[2792; 2793) ":" 1551 COLON@2792..2793 ":"
1552 COLON@[2793; 2794) ":" 1552 COLON@2793..2794 ":"
1553 L_ANGLE@[2794; 2795) "<" 1553 L_ANGLE@2794..2795 "<"
1554 R_ANGLE@[2795; 2796) ">" 1554 R_ANGLE@2795..2796 ">"
1555 TOKEN_TREE@[2796; 2798) 1555 TOKEN_TREE@2796..2798
1556 L_PAREN@[2796; 2797) "(" 1556 L_PAREN@2796..2797 "("
1557 R_PAREN@[2797; 2798) ")" 1557 R_PAREN@2797..2798 ")"
1558 DOT@[2798; 2799) "." 1558 DOT@2798..2799 "."
1559 IDENT@[2799; 2802) "rev" 1559 IDENT@2799..2802 "rev"
1560 COLON@[2802; 2803) ":" 1560 COLON@2802..2803 ":"
1561 COLON@[2803; 2804) ":" 1561 COLON@2803..2804 ":"
1562 L_ANGLE@[2804; 2805) "<" 1562 L_ANGLE@2804..2805 "<"
1563 R_ANGLE@[2805; 2806) ">" 1563 R_ANGLE@2805..2806 ">"
1564 TOKEN_TREE@[2806; 2808) 1564 TOKEN_TREE@2806..2808
1565 L_PAREN@[2806; 2807) "(" 1565 L_PAREN@2806..2807 "("
1566 R_PAREN@[2807; 2808) ")" 1566 R_PAREN@2807..2808 ")"
1567 DOT@[2808; 2809) "." 1567 DOT@2808..2809 "."
1568 IDENT@[2809; 2816) "collect" 1568 IDENT@2809..2816 "collect"
1569 COLON@[2816; 2817) ":" 1569 COLON@2816..2817 ":"
1570 COLON@[2817; 2818) ":" 1570 COLON@2817..2818 ":"
1571 L_ANGLE@[2818; 2819) "<" 1571 L_ANGLE@2818..2819 "<"
1572 IDENT@[2819; 2825) "String" 1572 IDENT@2819..2825 "String"
1573 R_ANGLE@[2825; 2826) ">" 1573 R_ANGLE@2825..2826 ">"
1574 TOKEN_TREE@[2826; 2828) 1574 TOKEN_TREE@2826..2828
1575 L_PAREN@[2826; 2827) "(" 1575 L_PAREN@2826..2827 "("
1576 R_PAREN@[2827; 2828) ")" 1576 R_PAREN@2827..2828 ")"
1577 R_PAREN@[2828; 2829) ")" 1577 R_PAREN@2828..2829 ")"
1578 SEMICOLON@[2829; 2830) ";" 1578 SEMICOLON@2829..2830 ";"
1579 WHITESPACE@[2830; 2831) "\n" 1579 WHITESPACE@2830..2831 "\n"
1580 R_CURLY@[2831; 2832) "}" 1580 R_CURLY@2831..2832 "}"
1581 WHITESPACE@[2832; 2834) "\n\n" 1581 WHITESPACE@2832..2834 "\n\n"
1582 FN_DEF@[2834; 2906) 1582 FN_DEF@2834..2906
1583 FN_KW@[2834; 2836) "fn" 1583 FN_KW@2834..2836 "fn"
1584 WHITESPACE@[2836; 2837) " " 1584 WHITESPACE@2836..2837 " "
1585 NAME@[2837; 2842) 1585 NAME@2837..2842
1586 IDENT@[2837; 2842) "union" 1586 IDENT@2837..2842 "union"
1587 PARAM_LIST@[2842; 2844) 1587 PARAM_LIST@2842..2844
1588 L_PAREN@[2842; 2843) "(" 1588 L_PAREN@2842..2843 "("
1589 R_PAREN@[2843; 2844) ")" 1589 R_PAREN@2843..2844 ")"
1590 WHITESPACE@[2844; 2845) " " 1590 WHITESPACE@2844..2845 " "
1591 BLOCK_EXPR@[2845; 2906) 1591 BLOCK_EXPR@2845..2906
1592 BLOCK@[2845; 2906) 1592 BLOCK@2845..2906
1593 L_CURLY@[2845; 2846) "{" 1593 L_CURLY@2845..2846 "{"
1594 WHITESPACE@[2846; 2851) "\n " 1594 WHITESPACE@2846..2851 "\n "
1595 UNION_DEF@[2851; 2904) 1595 UNION_DEF@2851..2904
1596 UNION_KW@[2851; 2856) "union" 1596 UNION_KW@2851..2856 "union"
1597 WHITESPACE@[2856; 2857) " " 1597 WHITESPACE@2856..2857 " "
1598 NAME@[2857; 2862) 1598 NAME@2857..2862
1599 IDENT@[2857; 2862) "union" 1599 IDENT@2857..2862 "union"
1600 TYPE_PARAM_LIST@[2862; 2870) 1600 TYPE_PARAM_LIST@2862..2870
1601 L_ANGLE@[2862; 2863) "<" 1601 L_ANGLE@2862..2863 "<"
1602 LIFETIME_PARAM@[2863; 2869) 1602 LIFETIME_PARAM@2863..2869
1603 LIFETIME@[2863; 2869) "\'union" 1603 LIFETIME@2863..2869 "\'union"
1604 R_ANGLE@[2869; 2870) ">" 1604 R_ANGLE@2869..2870 ">"
1605 WHITESPACE@[2870; 2871) " " 1605 WHITESPACE@2870..2871 " "
1606 RECORD_FIELD_DEF_LIST@[2871; 2904) 1606 RECORD_FIELD_DEF_LIST@2871..2904
1607 L_CURLY@[2871; 2872) "{" 1607 L_CURLY@2871..2872 "{"
1608 WHITESPACE@[2872; 2873) " " 1608 WHITESPACE@2872..2873 " "
1609 RECORD_FIELD_DEF@[2873; 2901) 1609 RECORD_FIELD_DEF@2873..2901
1610 NAME@[2873; 2878) 1610 NAME@2873..2878
1611 IDENT@[2873; 2878) "union" 1611 IDENT@2873..2878 "union"
1612 COLON@[2878; 2879) ":" 1612 COLON@2878..2879 ":"
1613 WHITESPACE@[2879; 2880) " " 1613 WHITESPACE@2879..2880 " "
1614 REFERENCE_TYPE@[2880; 2901) 1614 REFERENCE_TYPE@2880..2901
1615 AMP@[2880; 2881) "&" 1615 AMP@2880..2881 "&"
1616 LIFETIME@[2881; 2887) "\'union" 1616 LIFETIME@2881..2887 "\'union"
1617 WHITESPACE@[2887; 2888) " " 1617 WHITESPACE@2887..2888 " "
1618 PATH_TYPE@[2888; 2901) 1618 PATH_TYPE@2888..2901
1619 PATH@[2888; 2901) 1619 PATH@2888..2901
1620 PATH_SEGMENT@[2888; 2901) 1620 PATH_SEGMENT@2888..2901
1621 NAME_REF@[2888; 2893) 1621 NAME_REF@2888..2893
1622 IDENT@[2888; 2893) "union" 1622 IDENT@2888..2893 "union"
1623 TYPE_ARG_LIST@[2893; 2901) 1623 TYPE_ARG_LIST@2893..2901
1624 L_ANGLE@[2893; 2894) "<" 1624 L_ANGLE@2893..2894 "<"
1625 LIFETIME_ARG@[2894; 2900) 1625 LIFETIME_ARG@2894..2900
1626 LIFETIME@[2894; 2900) "\'union" 1626 LIFETIME@2894..2900 "\'union"
1627 R_ANGLE@[2900; 2901) ">" 1627 R_ANGLE@2900..2901 ">"
1628 COMMA@[2901; 2902) "," 1628 COMMA@2901..2902 ","
1629 WHITESPACE@[2902; 2903) " " 1629 WHITESPACE@2902..2903 " "
1630 R_CURLY@[2903; 2904) "}" 1630 R_CURLY@2903..2904 "}"
1631 WHITESPACE@[2904; 2905) "\n" 1631 WHITESPACE@2904..2905 "\n"
1632 R_CURLY@[2905; 2906) "}" 1632 R_CURLY@2905..2906 "}"
1633 WHITESPACE@[2906; 2908) "\n\n" 1633 WHITESPACE@2906..2908 "\n\n"
1634 FN_DEF@[2908; 3042) 1634 FN_DEF@2908..3042
1635 FN_KW@[2908; 2910) "fn" 1635 FN_KW@2908..2910 "fn"
1636 WHITESPACE@[2910; 2911) " " 1636 WHITESPACE@2910..2911 " "
1637 NAME@[2911; 2929) 1637 NAME@2911..2929
1638 IDENT@[2911; 2929) "special_characters" 1638 IDENT@2911..2929 "special_characters"
1639 PARAM_LIST@[2929; 2931) 1639 PARAM_LIST@2929..2931
1640 L_PAREN@[2929; 2930) "(" 1640 L_PAREN@2929..2930 "("
1641 R_PAREN@[2930; 2931) ")" 1641 R_PAREN@2930..2931 ")"
1642 WHITESPACE@[2931; 2932) " " 1642 WHITESPACE@2931..2932 " "
1643 BLOCK_EXPR@[2932; 3042) 1643 BLOCK_EXPR@2932..3042
1644 BLOCK@[2932; 3042) 1644 BLOCK@2932..3042
1645 L_CURLY@[2932; 2933) "{" 1645 L_CURLY@2932..2933 "{"
1646 WHITESPACE@[2933; 2938) "\n " 1646 WHITESPACE@2933..2938 "\n "
1647 LET_STMT@[2938; 3021) 1647 LET_STMT@2938..3021
1648 LET_KW@[2938; 2941) "let" 1648 LET_KW@2938..2941 "let"
1649 WHITESPACE@[2941; 2942) " " 1649 WHITESPACE@2941..2942 " "
1650 BIND_PAT@[2942; 2945) 1650 BIND_PAT@2942..2945
1651 NAME@[2942; 2945) 1651 NAME@2942..2945
1652 IDENT@[2942; 2945) "val" 1652 IDENT@2942..2945 "val"
1653 WHITESPACE@[2945; 2946) " " 1653 WHITESPACE@2945..2946 " "
1654 EQ@[2946; 2947) "=" 1654 EQ@2946..2947 "="
1655 WHITESPACE@[2947; 2948) " " 1655 WHITESPACE@2947..2948 " "
1656 PREFIX_EXPR@[2948; 3013) 1656 PREFIX_EXPR@2948..3013
1657 BANG@[2948; 2949) "!" 1657 BANG@2948..2949 "!"
1658 PAREN_EXPR@[2949; 3013) 1658 PAREN_EXPR@2949..3013
1659 L_PAREN@[2949; 2950) "(" 1659 L_PAREN@2949..2950 "("
1660 BIN_EXPR@[2950; 3012) 1660 BIN_EXPR@2950..3012
1661 CALL_EXPR@[2950; 2995) 1661 CALL_EXPR@2950..2995
1662 PAREN_EXPR@[2950; 2971) 1662 PAREN_EXPR@2950..2971
1663 L_PAREN@[2950; 2951) "(" 1663 L_PAREN@2950..2951 "("
1664 LAMBDA_EXPR@[2951; 2970) 1664 LAMBDA_EXPR@2951..2970
1665 PARAM_LIST@[2951; 2968) 1665 PARAM_LIST@2951..2968
1666 PIPE@[2951; 2952) "|" 1666 PIPE@2951..2952 "|"
1667 PARAM@[2952; 2962) 1667 PARAM@2952..2962
1668 TUPLE_PAT@[2952; 2956) 1668 TUPLE_PAT@2952..2956
1669 L_PAREN@[2952; 2953) "(" 1669 L_PAREN@2952..2953 "("
1670 DOT_DOT_PAT@[2953; 2955) 1670 DOT_DOT_PAT@2953..2955
1671 DOT2@[2953; 2955) ".." 1671 DOT2@2953..2955 ".."
1672 R_PAREN@[2955; 2956) ")" 1672 R_PAREN@2955..2956 ")"
1673 COLON@[2956; 2957) ":" 1673 COLON@2956..2957 ":"
1674 TUPLE_TYPE@[2957; 2962) 1674 TUPLE_TYPE@2957..2962
1675 L_PAREN@[2957; 2958) "(" 1675 L_PAREN@2957..2958 "("
1676 PLACEHOLDER_TYPE@[2958; 2959) 1676 PLACEHOLDER_TYPE@2958..2959
1677 UNDERSCORE@[2958; 2959) "_" 1677 UNDERSCORE@2958..2959 "_"
1678 COMMA@[2959; 2960) "," 1678 COMMA@2959..2960 ","
1679 PLACEHOLDER_TYPE@[2960; 2961) 1679 PLACEHOLDER_TYPE@2960..2961
1680 UNDERSCORE@[2960; 2961) "_" 1680 UNDERSCORE@2960..2961 "_"
1681 R_PAREN@[2961; 2962) ")" 1681 R_PAREN@2961..2962 ")"
1682 COMMA@[2962; 2963) "," 1682 COMMA@2962..2963 ","
1683 PARAM@[2963; 2967) 1683 PARAM@2963..2967
1684 BIND_PAT@[2963; 2967) 1684 BIND_PAT@2963..2967
1685 NAME@[2963; 2965) 1685 NAME@2963..2965
1686 IDENT@[2963; 2965) "__" 1686 IDENT@2963..2965 "__"
1687 AT@[2965; 2966) "@" 1687 AT@2965..2966 "@"
1688 PLACEHOLDER_PAT@[2966; 2967) 1688 PLACEHOLDER_PAT@2966..2967
1689 UNDERSCORE@[2966; 2967) "_" 1689 UNDERSCORE@2966..2967 "_"
1690 PIPE@[2967; 2968) "|" 1690 PIPE@2967..2968 "|"
1691 PATH_EXPR@[2968; 2970) 1691 PATH_EXPR@2968..2970
1692 PATH@[2968; 2970) 1692 PATH@2968..2970
1693 PATH_SEGMENT@[2968; 2970) 1693 PATH_SEGMENT@2968..2970
1694 NAME_REF@[2968; 2970) 1694 NAME_REF@2968..2970
1695 IDENT@[2968; 2970) "__" 1695 IDENT@2968..2970 "__"
1696 R_PAREN@[2970; 2971) ")" 1696 R_PAREN@2970..2971 ")"
1697 ARG_LIST@[2971; 2995) 1697 ARG_LIST@2971..2995
1698 L_PAREN@[2971; 2972) "(" 1698 L_PAREN@2971..2972 "("
1699 TUPLE_EXPR@[2972; 2987) 1699 TUPLE_EXPR@2972..2987
1700 L_PAREN@[2972; 2973) "(" 1700 L_PAREN@2972..2973 "("
1701 REF_EXPR@[2973; 2979) 1701 REF_EXPR@2973..2979
1702 AMP@[2973; 2974) "&" 1702 AMP@2973..2974 "&"
1703 PREFIX_EXPR@[2974; 2979) 1703 PREFIX_EXPR@2974..2979
1704 STAR@[2974; 2975) "*" 1704 STAR@2974..2975 "*"
1705 LITERAL@[2975; 2979) 1705 LITERAL@2975..2979
1706 STRING@[2975; 2979) "\"\\\\\"" 1706 STRING@2975..2979 "\"\\\\\""
1707 COMMA@[2979; 2980) "," 1707 COMMA@2979..2980 ","
1708 LITERAL@[2980; 2986) 1708 LITERAL@2980..2986
1709 CHAR@[2980; 2986) "\'🤔\'" 1709 CHAR@2980..2986 "\'🤔\'"
1710 R_PAREN@[2986; 2987) ")" 1710 R_PAREN@2986..2987 ")"
1711 COMMENT@[2987; 2991) "/**/" 1711 COMMENT@2987..2991 "/**/"
1712 COMMA@[2991; 2992) "," 1712 COMMA@2991..2992 ","
1713 BLOCK_EXPR@[2992; 2994) 1713 BLOCK_EXPR@2992..2994
1714 BLOCK@[2992; 2994) 1714 BLOCK@2992..2994
1715 L_CURLY@[2992; 2993) "{" 1715 L_CURLY@2992..2993 "{"
1716 R_CURLY@[2993; 2994) "}" 1716 R_CURLY@2993..2994 "}"
1717 R_PAREN@[2994; 2995) ")" 1717 R_PAREN@2994..2995 ")"
1718 EQ2@[2995; 2997) "==" 1718 EQ2@2995..2997 "=="
1719 BLOCK_EXPR@[2997; 3012) 1719 BLOCK_EXPR@2997..3012
1720 BLOCK@[2997; 3012) 1720 BLOCK@2997..3012
1721 L_CURLY@[2997; 2998) "{" 1721 L_CURLY@2997..2998 "{"
1722 EXPR_STMT@[2998; 3011) 1722 EXPR_STMT@2998..3011
1723 REF_EXPR@[2998; 3010) 1723 REF_EXPR@2998..3010
1724 AMP@[2998; 2999) "&" 1724 AMP@2998..2999 "&"
1725 INDEX_EXPR@[2999; 3010) 1725 INDEX_EXPR@2999..3010
1726 ARRAY_EXPR@[2999; 3006) 1726 ARRAY_EXPR@2999..3006
1727 L_BRACK@[2999; 3000) "[" 1727 L_BRACK@2999..3000 "["
1728 RANGE_EXPR@[3000; 3005) 1728 RANGE_EXPR@3000..3005
1729 DOT2EQ@[3000; 3003) "..=" 1729 DOT2EQ@3000..3003 "..="
1730 RANGE_EXPR@[3003; 3005) 1730 RANGE_EXPR@3003..3005
1731 DOT2@[3003; 3005) ".." 1731 DOT2@3003..3005 ".."
1732 R_BRACK@[3005; 3006) "]" 1732 R_BRACK@3005..3006 "]"
1733 L_BRACK@[3006; 3007) "[" 1733 L_BRACK@3006..3007 "["
1734 RANGE_EXPR@[3007; 3009) 1734 RANGE_EXPR@3007..3009
1735 DOT2@[3007; 3009) ".." 1735 DOT2@3007..3009 ".."
1736 R_BRACK@[3009; 3010) "]" 1736 R_BRACK@3009..3010 "]"
1737 SEMICOLON@[3010; 3011) ";" 1737 SEMICOLON@3010..3011 ";"
1738 R_CURLY@[3011; 3012) "}" 1738 R_CURLY@3011..3012 "}"
1739 R_PAREN@[3012; 3013) ")" 1739 R_PAREN@3012..3013 ")"
1740 COMMENT@[3013; 3015) "//" 1740 COMMENT@3013..3015 "//"
1741 WHITESPACE@[3015; 3020) "\n " 1741 WHITESPACE@3015..3020 "\n "
1742 SEMICOLON@[3020; 3021) ";" 1742 SEMICOLON@3020..3021 ";"
1743 WHITESPACE@[3021; 3026) "\n " 1743 WHITESPACE@3021..3026 "\n "
1744 EXPR_STMT@[3026; 3040) 1744 EXPR_STMT@3026..3040
1745 MACRO_CALL@[3026; 3039) 1745 MACRO_CALL@3026..3039
1746 PATH@[3026; 3032) 1746 PATH@3026..3032
1747 PATH_SEGMENT@[3026; 3032) 1747 PATH_SEGMENT@3026..3032
1748 NAME_REF@[3026; 3032) 1748 NAME_REF@3026..3032
1749 IDENT@[3026; 3032) "assert" 1749 IDENT@3026..3032 "assert"
1750 BANG@[3032; 3033) "!" 1750 BANG@3032..3033 "!"
1751 TOKEN_TREE@[3033; 3039) 1751 TOKEN_TREE@3033..3039
1752 L_PAREN@[3033; 3034) "(" 1752 L_PAREN@3033..3034 "("
1753 BANG@[3034; 3035) "!" 1753 BANG@3034..3035 "!"
1754 IDENT@[3035; 3038) "val" 1754 IDENT@3035..3038 "val"
1755 R_PAREN@[3038; 3039) ")" 1755 R_PAREN@3038..3039 ")"
1756 SEMICOLON@[3039; 3040) ";" 1756 SEMICOLON@3039..3040 ";"
1757 WHITESPACE@[3040; 3041) "\n" 1757 WHITESPACE@3040..3041 "\n"
1758 R_CURLY@[3041; 3042) "}" 1758 R_CURLY@3041..3042 "}"
1759 WHITESPACE@[3042; 3044) "\n\n" 1759 WHITESPACE@3042..3044 "\n\n"
1760 FN_DEF@[3044; 3514) 1760 FN_DEF@3044..3514
1761 FN_KW@[3044; 3046) "fn" 1761 FN_KW@3044..3046 "fn"
1762 WHITESPACE@[3046; 3047) " " 1762 WHITESPACE@3046..3047 " "
1763 NAME@[3047; 3057) 1763 NAME@3047..3057
1764 IDENT@[3047; 3057) "punch_card" 1764 IDENT@3047..3057 "punch_card"
1765 PARAM_LIST@[3057; 3059) 1765 PARAM_LIST@3057..3059
1766 L_PAREN@[3057; 3058) "(" 1766 L_PAREN@3057..3058 "("
1767 R_PAREN@[3058; 3059) ")" 1767 R_PAREN@3058..3059 ")"
1768 WHITESPACE@[3059; 3060) " " 1768 WHITESPACE@3059..3060 " "
1769 RET_TYPE@[3060; 3083) 1769 RET_TYPE@3060..3083
1770 THIN_ARROW@[3060; 3062) "->" 1770 THIN_ARROW@3060..3062 "->"
1771 WHITESPACE@[3062; 3063) " " 1771 WHITESPACE@3062..3063 " "
1772 IMPL_TRAIT_TYPE@[3063; 3083) 1772 IMPL_TRAIT_TYPE@3063..3083
1773 IMPL_KW@[3063; 3067) "impl" 1773 IMPL_KW@3063..3067 "impl"
1774 WHITESPACE@[3067; 3068) " " 1774 WHITESPACE@3067..3068 " "
1775 TYPE_BOUND_LIST@[3068; 3083) 1775 TYPE_BOUND_LIST@3068..3083
1776 TYPE_BOUND@[3068; 3083) 1776 TYPE_BOUND@3068..3083
1777 PATH_TYPE@[3068; 3083) 1777 PATH_TYPE@3068..3083
1778 PATH@[3068; 3083) 1778 PATH@3068..3083
1779 PATH@[3068; 3076) 1779 PATH@3068..3076
1780 PATH@[3068; 3071) 1780 PATH@3068..3071
1781 PATH_SEGMENT@[3068; 3071) 1781 PATH_SEGMENT@3068..3071
1782 NAME_REF@[3068; 3071) 1782 NAME_REF@3068..3071
1783 IDENT@[3068; 3071) "std" 1783 IDENT@3068..3071 "std"
1784 COLON2@[3071; 3073) "::" 1784 COLON2@3071..3073 "::"
1785 PATH_SEGMENT@[3073; 3076) 1785 PATH_SEGMENT@3073..3076
1786 NAME_REF@[3073; 3076) 1786 NAME_REF@3073..3076
1787 IDENT@[3073; 3076) "fmt" 1787 IDENT@3073..3076 "fmt"
1788 COLON2@[3076; 3078) "::" 1788 COLON2@3076..3078 "::"
1789 PATH_SEGMENT@[3078; 3083) 1789 PATH_SEGMENT@3078..3083
1790 NAME_REF@[3078; 3083) 1790 NAME_REF@3078..3083
1791 IDENT@[3078; 3083) "Debug" 1791 IDENT@3078..3083 "Debug"
1792 WHITESPACE@[3083; 3084) " " 1792 WHITESPACE@3083..3084 " "
1793 BLOCK_EXPR@[3084; 3514) 1793 BLOCK_EXPR@3084..3514
1794 BLOCK@[3084; 3514) 1794 BLOCK@3084..3514
1795 L_CURLY@[3084; 3085) "{" 1795 L_CURLY@3084..3085 "{"
1796 WHITESPACE@[3085; 3090) "\n " 1796 WHITESPACE@3085..3090 "\n "
1797 RANGE_EXPR@[3090; 3512) 1797 RANGE_EXPR@3090..3512
1798 DOT2EQ@[3090; 3093) "..=" 1798 DOT2EQ@3090..3093 "..="
1799 RANGE_EXPR@[3093; 3512) 1799 RANGE_EXPR@3093..3512
1800 DOT2EQ@[3093; 3096) "..=" 1800 DOT2EQ@3093..3096 "..="
1801 RANGE_EXPR@[3096; 3512) 1801 RANGE_EXPR@3096..3512
1802 DOT2@[3096; 3098) ".." 1802 DOT2@3096..3098 ".."
1803 WHITESPACE@[3098; 3099) " " 1803 WHITESPACE@3098..3099 " "
1804 RANGE_EXPR@[3099; 3512) 1804 RANGE_EXPR@3099..3512
1805 DOT2@[3099; 3101) ".." 1805 DOT2@3099..3101 ".."
1806 WHITESPACE@[3101; 3105) " " 1806 WHITESPACE@3101..3105 " "
1807 RANGE_EXPR@[3105; 3512) 1807 RANGE_EXPR@3105..3512
1808 DOT2@[3105; 3107) ".." 1808 DOT2@3105..3107 ".."
1809 WHITESPACE@[3107; 3108) " " 1809 WHITESPACE@3107..3108 " "
1810 RANGE_EXPR@[3108; 3512) 1810 RANGE_EXPR@3108..3512
1811 DOT2@[3108; 3110) ".." 1811 DOT2@3108..3110 ".."
1812 WHITESPACE@[3110; 3111) " " 1812 WHITESPACE@3110..3111 " "
1813 RANGE_EXPR@[3111; 3512) 1813 RANGE_EXPR@3111..3512
1814 DOT2@[3111; 3113) ".." 1814 DOT2@3111..3113 ".."
1815 WHITESPACE@[3113; 3114) " " 1815 WHITESPACE@3113..3114 " "
1816 RANGE_EXPR@[3114; 3512) 1816 RANGE_EXPR@3114..3512
1817 DOT2@[3114; 3116) ".." 1817 DOT2@3114..3116 ".."
1818 WHITESPACE@[3116; 3120) " " 1818 WHITESPACE@3116..3120 " "
1819 RANGE_EXPR@[3120; 3512) 1819 RANGE_EXPR@3120..3512
1820 DOT2@[3120; 3122) ".." 1820 DOT2@3120..3122 ".."
1821 WHITESPACE@[3122; 3123) " " 1821 WHITESPACE@3122..3123 " "
1822 RANGE_EXPR@[3123; 3512) 1822 RANGE_EXPR@3123..3512
1823 DOT2@[3123; 3125) ".." 1823 DOT2@3123..3125 ".."
1824 WHITESPACE@[3125; 3126) " " 1824 WHITESPACE@3125..3126 " "
1825 RANGE_EXPR@[3126; 3512) 1825 RANGE_EXPR@3126..3512
1826 DOT2@[3126; 3128) ".." 1826 DOT2@3126..3128 ".."
1827 WHITESPACE@[3128; 3129) " " 1827 WHITESPACE@3128..3129 " "
1828 RANGE_EXPR@[3129; 3512) 1828 RANGE_EXPR@3129..3512
1829 DOT2@[3129; 3131) ".." 1829 DOT2@3129..3131 ".."
1830 WHITESPACE@[3131; 3135) " " 1830 WHITESPACE@3131..3135 " "
1831 RANGE_EXPR@[3135; 3512) 1831 RANGE_EXPR@3135..3512
1832 DOT2@[3135; 3137) ".." 1832 DOT2@3135..3137 ".."
1833 WHITESPACE@[3137; 3138) " " 1833 WHITESPACE@3137..3138 " "
1834 RANGE_EXPR@[3138; 3512) 1834 RANGE_EXPR@3138..3512
1835 DOT2EQ@[3138; 3141) "..=" 1835 DOT2EQ@3138..3141 "..="
1836 RANGE_EXPR@[3141; 3512) 1836 RANGE_EXPR@3141..3512
1837 DOT2@[3141; 3143) ".." 1837 DOT2@3141..3143 ".."
1838 WHITESPACE@[3143; 3144) " " 1838 WHITESPACE@3143..3144 " "
1839 RANGE_EXPR@[3144; 3512) 1839 RANGE_EXPR@3144..3512
1840 DOT2@[3144; 3146) ".." 1840 DOT2@3144..3146 ".."
1841 WHITESPACE@[3146; 3151) "\n " 1841 WHITESPACE@3146..3151 "\n "
1842 RANGE_EXPR@[3151; 3512) 1842 RANGE_EXPR@3151..3512
1843 DOT2EQ@[3151; 3154) "..=" 1843 DOT2EQ@3151..3154 "..="
1844 RANGE_EXPR@[3154; 3512) 1844 RANGE_EXPR@3154..3512
1845 DOT2@[3154; 3156) ".." 1845 DOT2@3154..3156 ".."
1846 WHITESPACE@[3156; 3157) " " 1846 WHITESPACE@3156..3157 " "
1847 RANGE_EXPR@[3157; 3512) 1847 RANGE_EXPR@3157..3512
1848 DOT2EQ@[3157; 3160) "..=" 1848 DOT2EQ@3157..3160 "..="
1849 RANGE_EXPR@[3160; 3512) 1849 RANGE_EXPR@3160..3512
1850 DOT2@[3160; 3162) ".." 1850 DOT2@3160..3162 ".."
1851 WHITESPACE@[3162; 3166) " " 1851 WHITESPACE@3162..3166 " "
1852 RANGE_EXPR@[3166; 3512) 1852 RANGE_EXPR@3166..3512
1853 DOT2@[3166; 3168) ".." 1853 DOT2@3166..3168 ".."
1854 WHITESPACE@[3168; 3169) " " 1854 WHITESPACE@3168..3169 " "
1855 RANGE_EXPR@[3169; 3512) 1855 RANGE_EXPR@3169..3512
1856 DOT2@[3169; 3171) ".." 1856 DOT2@3169..3171 ".."
1857 WHITESPACE@[3171; 3172) " " 1857 WHITESPACE@3171..3172 " "
1858 RANGE_EXPR@[3172; 3512) 1858 RANGE_EXPR@3172..3512
1859 DOT2@[3172; 3174) ".." 1859 DOT2@3172..3174 ".."
1860 WHITESPACE@[3174; 3175) " " 1860 WHITESPACE@3174..3175 " "
1861 RANGE_EXPR@[3175; 3512) 1861 RANGE_EXPR@3175..3512
1862 DOT2@[3175; 3177) ".." 1862 DOT2@3175..3177 ".."
1863 WHITESPACE@[3177; 3181) " " 1863 WHITESPACE@3177..3181 " "
1864 RANGE_EXPR@[3181; 3512) 1864 RANGE_EXPR@3181..3512
1865 DOT2@[3181; 3183) ".." 1865 DOT2@3181..3183 ".."
1866 WHITESPACE@[3183; 3184) " " 1866 WHITESPACE@3183..3184 " "
1867 RANGE_EXPR@[3184; 3512) 1867 RANGE_EXPR@3184..3512
1868 DOT2@[3184; 3186) ".." 1868 DOT2@3184..3186 ".."
1869 WHITESPACE@[3186; 3187) " " 1869 WHITESPACE@3186..3187 " "
1870 RANGE_EXPR@[3187; 3512) 1870 RANGE_EXPR@3187..3512
1871 DOT2@[3187; 3189) ".." 1871 DOT2@3187..3189 ".."
1872 WHITESPACE@[3189; 3190) " " 1872 WHITESPACE@3189..3190 " "
1873 RANGE_EXPR@[3190; 3512) 1873 RANGE_EXPR@3190..3512
1874 DOT2@[3190; 3192) ".." 1874 DOT2@3190..3192 ".."
1875 WHITESPACE@[3192; 3196) " " 1875 WHITESPACE@3192..3196 " "
1876 RANGE_EXPR@[3196; 3512) 1876 RANGE_EXPR@3196..3512
1877 DOT2EQ@[3196; 3199) "..=" 1877 DOT2EQ@3196..3199 "..="
1878 RANGE_EXPR@[3199; 3512) 1878 RANGE_EXPR@3199..3512
1879 DOT2EQ@[3199; 3202) "..=" 1879 DOT2EQ@3199..3202 "..="
1880 RANGE_EXPR@[3202; 3512) 1880 RANGE_EXPR@3202..3512
1881 DOT2EQ@[3202; 3205) "..=" 1881 DOT2EQ@3202..3205 "..="
1882 RANGE_EXPR@[3205; 3512) 1882 RANGE_EXPR@3205..3512
1883 DOT2@[3205; 3207) ".." 1883 DOT2@3205..3207 ".."
1884 WHITESPACE@[3207; 3212) "\n " 1884 WHITESPACE@3207..3212 "\n "
1885 RANGE_EXPR@[3212; 3512) 1885 RANGE_EXPR@3212..3512
1886 DOT2EQ@[3212; 3215) "..=" 1886 DOT2EQ@3212..3215 "..="
1887 RANGE_EXPR@[3215; 3512) 1887 RANGE_EXPR@3215..3512
1888 DOT2@[3215; 3217) ".." 1888 DOT2@3215..3217 ".."
1889 WHITESPACE@[3217; 3218) " " 1889 WHITESPACE@3217..3218 " "
1890 RANGE_EXPR@[3218; 3512) 1890 RANGE_EXPR@3218..3512
1891 DOT2EQ@[3218; 3221) "..=" 1891 DOT2EQ@3218..3221 "..="
1892 RANGE_EXPR@[3221; 3512) 1892 RANGE_EXPR@3221..3512
1893 DOT2@[3221; 3223) ".." 1893 DOT2@3221..3223 ".."
1894 WHITESPACE@[3223; 3227) " " 1894 WHITESPACE@3223..3227 " "
1895 RANGE_EXPR@[3227; 3512) 1895 RANGE_EXPR@3227..3512
1896 DOT2EQ@[3227; 3230) "..=" 1896 DOT2EQ@3227..3230 "..="
1897 RANGE_EXPR@[3230; 3512) 1897 RANGE_EXPR@3230..3512
1898 DOT2@[3230; 3232) ".." 1898 DOT2@3230..3232 ".."
1899 WHITESPACE@[3232; 3233) " " 1899 WHITESPACE@3232..3233 " "
1900 RANGE_EXPR@[3233; 3512) 1900 RANGE_EXPR@3233..3512
1901 DOT2EQ@[3233; 3236) "..=" 1901 DOT2EQ@3233..3236 "..="
1902 RANGE_EXPR@[3236; 3512) 1902 RANGE_EXPR@3236..3512
1903 DOT2@[3236; 3238) ".." 1903 DOT2@3236..3238 ".."
1904 WHITESPACE@[3238; 3242) " " 1904 WHITESPACE@3238..3242 " "
1905 RANGE_EXPR@[3242; 3512) 1905 RANGE_EXPR@3242..3512
1906 DOT2@[3242; 3244) ".." 1906 DOT2@3242..3244 ".."
1907 WHITESPACE@[3244; 3245) " " 1907 WHITESPACE@3244..3245 " "
1908 RANGE_EXPR@[3245; 3512) 1908 RANGE_EXPR@3245..3512
1909 DOT2EQ@[3245; 3248) "..=" 1909 DOT2EQ@3245..3248 "..="
1910 RANGE_EXPR@[3248; 3512) 1910 RANGE_EXPR@3248..3512
1911 DOT2EQ@[3248; 3251) "..=" 1911 DOT2EQ@3248..3251 "..="
1912 RANGE_EXPR@[3251; 3512) 1912 RANGE_EXPR@3251..3512
1913 DOT2@[3251; 3253) ".." 1913 DOT2@3251..3253 ".."
1914 WHITESPACE@[3253; 3257) " " 1914 WHITESPACE@3253..3257 " "
1915 RANGE_EXPR@[3257; 3512) 1915 RANGE_EXPR@3257..3512
1916 DOT2@[3257; 3259) ".." 1916 DOT2@3257..3259 ".."
1917 WHITESPACE@[3259; 3260) " " 1917 WHITESPACE@3259..3260 " "
1918 RANGE_EXPR@[3260; 3512) 1918 RANGE_EXPR@3260..3512
1919 DOT2EQ@[3260; 3263) "..=" 1919 DOT2EQ@3260..3263 "..="
1920 RANGE_EXPR@[3263; 3512) 1920 RANGE_EXPR@3263..3512
1921 DOT2@[3263; 3265) ".." 1921 DOT2@3263..3265 ".."
1922 WHITESPACE@[3265; 3266) " " 1922 [email protected] " "
1923 RANGE_EXPR@[3266; 3512) 1923 RANGE_EXPR@3266..3512
1924 DOT2@[3266; 3268) ".." 1924 DOT2@3266..3268 ".."
1925 WHITESPACE@[3268; 3273) "\n " 1925 [email protected] "\n "
1926 RANGE_EXPR@[3273; 3512) 1926 RANGE_EXPR@3273..3512
1927 DOT2EQ@[3273; 3276) "..=" 1927 [email protected] "..="
1928 RANGE_EXPR@[3276; 3512) 1928 [email protected]
1929 DOT2EQ@[3276; 3279) "..=" 1929 [email protected] "..="
1930 RANGE_EXPR@[3279; 3512) 1930 [email protected]
1931 DOT2@[3279; 3281) ".." 1931 [email protected] ".."
1932 WHITESPACE@[3281; 3282) " " 1932 [email protected] " "
1933 RANGE_EXPR@[3282; 3512) 1933 [email protected]
1934 DOT2@[3282; 3284) ".." 1934 [email protected] ".."
1935 WHITESPACE@[3284; 3288) " " 1935 [email protected] " "
1936 RANGE_EXPR@[3288; 3512) 1936 [email protected]
1937 DOT2EQ@[3288; 3291) "..=" 1937 [email protected] "..="
1938 RANGE_EXPR@[3291; 3512) 1938 [email protected]
1939 DOT2@[3291; 3293) ".." 1939 [email protected] ".."
1940 WHITESPACE@[3293; 3294) " " 1940 [email protected] " "
1941 RANGE_EXPR@[3294; 3512) 1941 [email protected]
1942 DOT2EQ@[3294; 3297) "..=" 1942 [email protected] "..="
1943 RANGE_EXPR@[3297; 3512) 1943 [email protected]
1944 DOT2@[3297; 3299) ".." 1944 [email protected] ".."
1945 WHITESPACE@[3299; 3303) " " 1945 [email protected] " "
1946 RANGE_EXPR@[3303; 3512) 1946 [email protected]
1947 DOT2EQ@[3303; 3306) "..=" 1947 [email protected] "..="
1948 RANGE_EXPR@[3306; 3512) 1948 [email protected]
1949 DOT2@[3306; 3308) ".." 1949 [email protected] ".."
1950 WHITESPACE@[3308; 3309) " " 1950 [email protected] " "
1951 RANGE_EXPR@[3309; 3512) 1951 [email protected]
1952 DOT2@[3309; 3311) ".." 1952 [email protected] ".."
1953 WHITESPACE@[3311; 3312) " " 1953 [email protected] " "
1954 RANGE_EXPR@[3312; 3512) 1954 [email protected]
1955 DOT2@[3312; 3314) ".." 1955 [email protected] ".."
1956 WHITESPACE@[3314; 3318) " " 1956 [email protected] " "
1957 RANGE_EXPR@[3318; 3512) 1957 [email protected]
1958 DOT2@[3318; 3320) ".." 1958 [email protected] ".."
1959 WHITESPACE@[3320; 3321) " " 1959 [email protected] " "
1960 RANGE_EXPR@[3321; 3512) 1960 [email protected]
1961 DOT2EQ@[3321; 3324) "..=" 1961 [email protected] "..="
1962 RANGE_EXPR@[3324; 3512) 1962 [email protected]
1963 DOT2@[3324; 3326) ".." 1963 [email protected] ".."
1964 WHITESPACE@[3326; 3327) " " 1964 [email protected] " "
1965 RANGE_EXPR@[3327; 3512) 1965 [email protected]
1966 DOT2@[3327; 3329) ".." 1966 [email protected] ".."
1967 WHITESPACE@[3329; 3334) "\n " 1967 [email protected] "\n "
1968 RANGE_EXPR@[3334; 3512) 1968 [email protected]
1969 DOT2EQ@[3334; 3337) "..=" 1969 [email protected] "..="
1970 RANGE_EXPR@[3337; 3512) 1970 [email protected]
1971 DOT2@[3337; 3339) ".." 1971 [email protected] ".."
1972 WHITESPACE@[3339; 3340) " " 1972 [email protected] " "
1973 RANGE_EXPR@[3340; 3512) 1973 [email protected]
1974 DOT2EQ@[3340; 3343) "..=" 1974 [email protected] "..="
1975 RANGE_EXPR@[3343; 3512) 1975 [email protected]
1976 DOT2@[3343; 3345) ".." 1976 [email protected] ".."
1977 WHITESPACE@[3345; 3349) " " 1977 [email protected] " "
1978 RANGE_EXPR@[3349; 3512) 1978 [email protected]
1979 DOT2EQ@[3349; 3352) "..=" 1979 [email protected] "..="
1980 RANGE_EXPR@[3352; 3512) 1980 [email protected]
1981 DOT2@[3352; 3354) ".." 1981 [email protected] ".."
1982 WHITESPACE@[3354; 3355) " " 1982 [email protected] " "
1983 RANGE_EXPR@[3355; 3512) 1983 [email protected]
1984 DOT2EQ@[3355; 3358) "..=" 1984 [email protected] "..="
1985 RANGE_EXPR@[3358; 3512) 1985 [email protected]
1986 DOT2@[3358; 3360) ".." 1986 [email protected] ".."
1987 WHITESPACE@[3360; 3364) " " 1987 [email protected] " "
1988 RANGE_EXPR@[3364; 3512) 1988 [email protected]
1989 DOT2@[3364; 3366) ".." 1989 [email protected] ".."
1990 WHITESPACE@[3366; 3367) " " 1990 [email protected] " "
1991 RANGE_EXPR@[3367; 3512) 1991 [email protected]
1992 DOT2EQ@[3367; 3370) "..=" 1992 [email protected] "..="
1993 RANGE_EXPR@[3370; 3512) 1993 [email protected]
1994 DOT2@[3370; 3372) ".." 1994 [email protected] ".."
1995 WHITESPACE@[3372; 3373) " " 1995 [email protected] " "
1996 RANGE_EXPR@[3373; 3512) 1996 [email protected]
1997 DOT2@[3373; 3375) ".." 1997 [email protected] ".."
1998 WHITESPACE@[3375; 3379) " " 1998 [email protected] " "
1999 RANGE_EXPR@[3379; 3512) 1999 [email protected]
2000 DOT2@[3379; 3381) ".." 2000 [email protected] ".."
2001 WHITESPACE@[3381; 3382) " " 2001 [email protected] " "
2002 RANGE_EXPR@[3382; 3512) 2002 [email protected]
2003 DOT2EQ@[3382; 3385) "..=" 2003 [email protected] "..="
2004 RANGE_EXPR@[3385; 3512) 2004 [email protected]
2005 DOT2@[3385; 3387) ".." 2005 [email protected] ".."
2006 WHITESPACE@[3387; 3388) " " 2006 [email protected] " "
2007 RANGE_EXPR@[3388; 3512) 2007 [email protected]
2008 DOT2@[3388; 3390) ".." 2008 [email protected] ".."
2009 WHITESPACE@[3390; 3395) "\n " 2009 [email protected] "\n "
2010 RANGE_EXPR@[3395; 3512) 2010 [email protected]
2011 DOT2EQ@[3395; 3398) "..=" 2011 [email protected] "..="
2012 RANGE_EXPR@[3398; 3512) 2012 [email protected]
2013 DOT2@[3398; 3400) ".." 2013 [email protected] ".."
2014 WHITESPACE@[3400; 3401) " " 2014 [email protected] " "
2015 RANGE_EXPR@[3401; 3512) 2015 [email protected]
2016 DOT2EQ@[3401; 3404) "..=" 2016 [email protected] "..="
2017 RANGE_EXPR@[3404; 3512) 2017 [email protected]
2018 DOT2@[3404; 3406) ".." 2018 [email protected] ".."
2019 WHITESPACE@[3406; 3410) " " 2019 [email protected] " "
2020 RANGE_EXPR@[3410; 3512) 2020 [email protected]
2021 DOT2EQ@[3410; 3413) "..=" 2021 [email protected] "..="
2022 RANGE_EXPR@[3413; 3512) 2022 [email protected]
2023 DOT2@[3413; 3415) ".." 2023 [email protected] ".."
2024 WHITESPACE@[3415; 3416) " " 2024 [email protected] " "
2025 RANGE_EXPR@[3416; 3512) 2025 [email protected]
2026 DOT2EQ@[3416; 3419) "..=" 2026 [email protected] "..="
2027 RANGE_EXPR@[3419; 3512) 2027 [email protected]
2028 DOT2@[3419; 3421) ".." 2028 [email protected] ".."
2029 WHITESPACE@[3421; 3425) " " 2029 [email protected] " "
2030 RANGE_EXPR@[3425; 3512) 2030 [email protected]
2031 DOT2@[3425; 3427) ".." 2031 [email protected] ".."
2032 WHITESPACE@[3427; 3428) " " 2032 [email protected] " "
2033 RANGE_EXPR@[3428; 3512) 2033 [email protected]
2034 DOT2@[3428; 3430) ".." 2034 [email protected] ".."
2035 WHITESPACE@[3430; 3431) " " 2035 [email protected] " "
2036 RANGE_EXPR@[3431; 3512) 2036 [email protected]
2037 DOT2EQ@[3431; 3434) "..=" 2037 [email protected] "..="
2038 RANGE_EXPR@[3434; 3512) 2038 [email protected]
2039 DOT2@[3434; 3436) ".." 2039 [email protected] ".."
2040 WHITESPACE@[3436; 3440) " " 2040 [email protected] " "
2041 RANGE_EXPR@[3440; 3512) 2041 [email protected]
2042 DOT2@[3440; 3442) ".." 2042 [email protected] ".."
2043 WHITESPACE@[3442; 3443) " " 2043 [email protected] " "
2044 RANGE_EXPR@[3443; 3512) 2044 [email protected]
2045 DOT2EQ@[3443; 3446) "..=" 2045 [email protected] "..="
2046 RANGE_EXPR@[3446; 3512) 2046 [email protected]
2047 DOT2@[3446; 3448) ".." 2047 [email protected] ".."
2048 WHITESPACE@[3448; 3449) " " 2048 [email protected] " "
2049 RANGE_EXPR@[3449; 3512) 2049 [email protected]
2050 DOT2@[3449; 3451) ".." 2050 [email protected] ".."
2051 WHITESPACE@[3451; 3456) "\n " 2051 [email protected] "\n "
2052 RANGE_EXPR@[3456; 3512) 2052 [email protected]
2053 DOT2EQ@[3456; 3459) "..=" 2053 [email protected] "..="
2054 RANGE_EXPR@[3459; 3512) 2054 [email protected]
2055 DOT2@[3459; 3461) ".." 2055 [email protected] ".."
2056 WHITESPACE@[3461; 3462) " " 2056 [email protected] " "
2057 RANGE_EXPR@[3462; 3512) 2057 [email protected]
2058 DOT2EQ@[3462; 3465) "..=" 2058 [email protected] "..="
2059 RANGE_EXPR@[3465; 3512) 2059 [email protected]
2060 DOT2@[3465; 3467) ".." 2060 [email protected] ".."
2061 WHITESPACE@[3467; 3471) " " 2061 [email protected] " "
2062 RANGE_EXPR@[3471; 3512) 2062 [email protected]
2063 DOT2@[3471; 3473) ".." 2063 [email protected] ".."
2064 WHITESPACE@[3473; 3474) " " 2064 [email protected] " "
2065 RANGE_EXPR@[3474; 3512) 2065 [email protected]
2066 DOT2EQ@[3474; 3477) "..=" 2066 [email protected] "..="
2067 RANGE_EXPR@[3477; 3512) 2067 [email protected]
2068 DOT2EQ@[3477; 3480) "..=" 2068 [email protected] "..="
2069 RANGE_EXPR@[3480; 3512) 2069 [email protected]
2070 DOT2@[3480; 3482) ".." 2070 [email protected] ".."
2071 WHITESPACE@[3482; 3486) " " 2071 [email protected] " "
2072 RANGE_EXPR@[3486; 3512) 2072 [email protected]
2073 DOT2EQ@[3486; 3489) "..=" 2073 [email protected] "..="
2074 RANGE_EXPR@[3489; 3512) 2074 [email protected]
2075 DOT2EQ@[3489; 3492) "..=" 2075 [email protected] "..="
2076 RANGE_EXPR@[3492; 3512) 2076 [email protected]
2077 DOT2@[3492; 3494) ".." 2077 [email protected] ".."
2078 WHITESPACE@[3494; 3495) " " 2078 [email protected] " "
2079 RANGE_EXPR@[3495; 3512) 2079 [email protected]
2080 DOT2@[3495; 3497) ".." 2080 [email protected] ".."
2081 WHITESPACE@[3497; 3501) " " 2081 [email protected] " "
2082 RANGE_EXPR@[3501; 3512) 2082 [email protected]
2083 DOT2@[3501; 3503) ".." 2083 [email protected] ".."
2084 WHITESPACE@[3503; 3504) " " 2084 [email protected] " "
2085 RANGE_EXPR@[3504; 3512) 2085 [email protected]
2086 DOT2EQ@[3504; 3507) "..=" 2086 [email protected] "..="
2087 RANGE_EXPR@[3507; 3512) 2087 [email protected]
2088 DOT2@[3507; 3509) ".." 2088 [email protected] ".."
2089 WHITESPACE@[3509; 3510) " " 2089 [email protected] " "
2090 RANGE_EXPR@[3510; 3512) 2090 [email protected]
2091 DOT2@[3510; 3512) ".." 2091 [email protected] ".."
2092 WHITESPACE@[3512; 3513) "\n" 2092 WHITESPACE@3512..3513 "\n"
2093 R_CURLY@[3513; 3514) "}" 2093 R_CURLY@3513..3514 "}"
2094 WHITESPACE@[3514; 3516) "\n\n" 2094 WHITESPACE@3514..3516 "\n\n"
2095 FN_DEF@[3516; 3552) 2095 FN_DEF@3516..3552
2096 FN_KW@[3516; 3518) "fn" 2096 FN_KW@3516..3518 "fn"
2097 WHITESPACE@[3518; 3519) " " 2097 WHITESPACE@3518..3519 " "
2098 NAME@[3519; 3525) 2098 NAME@3519..3525
2099 IDENT@[3519; 3525) "ktulhu" 2099 IDENT@3519..3525 "ktulhu"
2100 PARAM_LIST@[3525; 3527) 2100 PARAM_LIST@3525..3527
2101 L_PAREN@[3525; 3526) "(" 2101 L_PAREN@3525..3526 "("
2102 R_PAREN@[3526; 3527) ")" 2102 R_PAREN@3526..3527 ")"
2103 WHITESPACE@[3527; 3528) " " 2103 WHITESPACE@3527..3528 " "
2104 BLOCK_EXPR@[3528; 3552) 2104 BLOCK_EXPR@3528..3552
2105 BLOCK@[3528; 3552) 2105 BLOCK@3528..3552
2106 L_CURLY@[3528; 3529) "{" 2106 L_CURLY@3528..3529 "{"
2107 WHITESPACE@[3529; 3534) "\n " 2107 WHITESPACE@3529..3534 "\n "
2108 SEMICOLON@[3534; 3535) ";" 2108 SEMICOLON@3534..3535 ";"
2109 SEMICOLON@[3535; 3536) ";" 2109 SEMICOLON@3535..3536 ";"
2110 SEMICOLON@[3536; 3537) ";" 2110 SEMICOLON@3536..3537 ";"
2111 EXPR_STMT@[3537; 3540) 2111 EXPR_STMT@3537..3540
2112 TUPLE_EXPR@[3537; 3539) 2112 TUPLE_EXPR@3537..3539
2113 L_PAREN@[3537; 3538) "(" 2113 L_PAREN@3537..3538 "("
2114 R_PAREN@[3538; 3539) ")" 2114 R_PAREN@3538..3539 ")"
2115 SEMICOLON@[3539; 3540) ";" 2115 SEMICOLON@3539..3540 ";"
2116 SEMICOLON@[3540; 3541) ";" 2116 SEMICOLON@3540..3541 ";"
2117 SEMICOLON@[3541; 3542) ";" 2117 SEMICOLON@3541..3542 ";"
2118 SEMICOLON@[3542; 3543) ";" 2118 SEMICOLON@3542..3543 ";"
2119 SEMICOLON@[3543; 3544) ";" 2119 SEMICOLON@3543..3544 ";"
2120 SEMICOLON@[3544; 3545) ";" 2120 SEMICOLON@3544..3545 ";"
2121 SEMICOLON@[3545; 3546) ";" 2121 SEMICOLON@3545..3546 ";"
2122 SEMICOLON@[3546; 3547) ";" 2122 SEMICOLON@3546..3547 ";"
2123 SEMICOLON@[3547; 3548) ";" 2123 SEMICOLON@3547..3548 ";"
2124 TUPLE_EXPR@[3548; 3550) 2124 TUPLE_EXPR@3548..3550
2125 L_PAREN@[3548; 3549) "(" 2125 L_PAREN@3548..3549 "("
2126 R_PAREN@[3549; 3550) ")" 2126 R_PAREN@3549..3550 ")"
2127 WHITESPACE@[3550; 3551) "\n" 2127 WHITESPACE@3550..3551 "\n"
2128 R_CURLY@[3551; 3552) "}" 2128 R_CURLY@3551..3552 "}"
2129 WHITESPACE@[3552; 3554) "\n\n" 2129 WHITESPACE@3552..3554 "\n\n"
2130 FN_DEF@[3554; 3812) 2130 FN_DEF@3554..3812
2131 VISIBILITY@[3554; 3557) 2131 VISIBILITY@3554..3557
2132 PUB_KW@[3554; 3557) "pub" 2132 PUB_KW@3554..3557 "pub"
2133 WHITESPACE@[3557; 3558) " " 2133 WHITESPACE@3557..3558 " "
2134 FN_KW@[3558; 3560) "fn" 2134 FN_KW@3558..3560 "fn"
2135 WHITESPACE@[3560; 3561) " " 2135 WHITESPACE@3560..3561 " "
2136 NAME@[3561; 3565) 2136 NAME@3561..3565
2137 IDENT@[3561; 3565) "main" 2137 IDENT@3561..3565 "main"
2138 PARAM_LIST@[3565; 3567) 2138 PARAM_LIST@3565..3567
2139 L_PAREN@[3565; 3566) "(" 2139 L_PAREN@3565..3566 "("
2140 R_PAREN@[3566; 3567) ")" 2140 R_PAREN@3566..3567 ")"
2141 WHITESPACE@[3567; 3568) " " 2141 WHITESPACE@3567..3568 " "
2142 BLOCK_EXPR@[3568; 3812) 2142 BLOCK_EXPR@3568..3812
2143 BLOCK@[3568; 3812) 2143 BLOCK@3568..3812
2144 L_CURLY@[3568; 3569) "{" 2144 L_CURLY@3568..3569 "{"
2145 WHITESPACE@[3569; 3574) "\n " 2145 WHITESPACE@3569..3574 "\n "
2146 EXPR_STMT@[3574; 3584) 2146 EXPR_STMT@3574..3584
2147 CALL_EXPR@[3574; 3583) 2147 CALL_EXPR@3574..3583
2148 PATH_EXPR@[3574; 3581) 2148 PATH_EXPR@3574..3581
2149 PATH@[3574; 3581) 2149 PATH@3574..3581
2150 PATH_SEGMENT@[3574; 3581) 2150 PATH_SEGMENT@3574..3581
2151 NAME_REF@[3574; 3581) 2151 NAME_REF@3574..3581
2152 IDENT@[3574; 3581) "strange" 2152 IDENT@3574..3581 "strange"
2153 ARG_LIST@[3581; 3583) 2153 ARG_LIST@3581..3583
2154 L_PAREN@[3581; 3582) "(" 2154 L_PAREN@3581..3582 "("
2155 R_PAREN@[3582; 3583) ")" 2155 R_PAREN@3582..3583 ")"
2156 SEMICOLON@[3583; 3584) ";" 2156 SEMICOLON@3583..3584 ";"
2157 WHITESPACE@[3584; 3589) "\n " 2157 WHITESPACE@3584..3589 "\n "
2158 EXPR_STMT@[3589; 3597) 2158 EXPR_STMT@3589..3597
2159 CALL_EXPR@[3589; 3596) 2159 CALL_EXPR@3589..3596
2160 PATH_EXPR@[3589; 3594) 2160 PATH_EXPR@3589..3594
2161 PATH@[3589; 3594) 2161 PATH@3589..3594
2162 PATH_SEGMENT@[3589; 3594) 2162 PATH_SEGMENT@3589..3594
2163 NAME_REF@[3589; 3594) 2163 NAME_REF@3589..3594
2164 IDENT@[3589; 3594) "funny" 2164 IDENT@3589..3594 "funny"
2165 ARG_LIST@[3594; 3596) 2165 ARG_LIST@3594..3596
2166 L_PAREN@[3594; 3595) "(" 2166 L_PAREN@3594..3595 "("
2167 R_PAREN@[3595; 3596) ")" 2167 R_PAREN@3595..3596 ")"
2168 SEMICOLON@[3596; 3597) ";" 2168 SEMICOLON@3596..3597 ";"
2169 WHITESPACE@[3597; 3602) "\n " 2169 WHITESPACE@3597..3602 "\n "
2170 EXPR_STMT@[3602; 3609) 2170 EXPR_STMT@3602..3609
2171 CALL_EXPR@[3602; 3608) 2171 CALL_EXPR@3602..3608
2172 PATH_EXPR@[3602; 3606) 2172 PATH_EXPR@3602..3606
2173 PATH@[3602; 3606) 2173 PATH@3602..3606
2174 PATH_SEGMENT@[3602; 3606) 2174 PATH_SEGMENT@3602..3606
2175 NAME_REF@[3602; 3606) 2175 NAME_REF@3602..3606
2176 IDENT@[3602; 3606) "what" 2176 IDENT@3602..3606 "what"
2177 ARG_LIST@[3606; 3608) 2177 ARG_LIST@3606..3608
2178 L_PAREN@[3606; 3607) "(" 2178 L_PAREN@3606..3607 "("
2179 R_PAREN@[3607; 3608) ")" 2179 R_PAREN@3607..3608 ")"
2180 SEMICOLON@[3608; 3609) ";" 2180 SEMICOLON@3608..3609 ";"
2181 WHITESPACE@[3609; 3614) "\n " 2181 WHITESPACE@3609..3614 "\n "
2182 EXPR_STMT@[3614; 3628) 2182 EXPR_STMT@3614..3628
2183 CALL_EXPR@[3614; 3627) 2183 CALL_EXPR@3614..3627
2184 PATH_EXPR@[3614; 3625) 2184 PATH_EXPR@3614..3625
2185 PATH@[3614; 3625) 2185 PATH@3614..3625
2186 PATH_SEGMENT@[3614; 3625) 2186 PATH_SEGMENT@3614..3625
2187 NAME_REF@[3614; 3625) 2187 NAME_REF@3614..3625
2188 IDENT@[3614; 3625) "zombiejesus" 2188 IDENT@3614..3625 "zombiejesus"
2189 ARG_LIST@[3625; 3627) 2189 ARG_LIST@3625..3627
2190 L_PAREN@[3625; 3626) "(" 2190 L_PAREN@3625..3626 "("
2191 R_PAREN@[3626; 3627) ")" 2191 R_PAREN@3626..3627 ")"
2192 SEMICOLON@[3627; 3628) ";" 2192 SEMICOLON@3627..3628 ";"
2193 WHITESPACE@[3628; 3633) "\n " 2193 WHITESPACE@3628..3633 "\n "
2194 EXPR_STMT@[3633; 3643) 2194 EXPR_STMT@3633..3643
2195 CALL_EXPR@[3633; 3642) 2195 CALL_EXPR@3633..3642
2196 PATH_EXPR@[3633; 3640) 2196 PATH_EXPR@3633..3640
2197 PATH@[3633; 3640) 2197 PATH@3633..3640
2198 PATH_SEGMENT@[3633; 3640) 2198 PATH_SEGMENT@3633..3640
2199 NAME_REF@[3633; 3640) 2199 NAME_REF@3633..3640
2200 IDENT@[3633; 3640) "notsure" 2200 IDENT@3633..3640 "notsure"
2201 ARG_LIST@[3640; 3642) 2201 ARG_LIST@3640..3642
2202 L_PAREN@[3640; 3641) "(" 2202 L_PAREN@3640..3641 "("
2203 R_PAREN@[3641; 3642) ")" 2203 R_PAREN@3641..3642 ")"
2204 SEMICOLON@[3642; 3643) ";" 2204 SEMICOLON@3642..3643 ";"
2205 WHITESPACE@[3643; 3648) "\n " 2205 WHITESPACE@3643..3648 "\n "
2206 EXPR_STMT@[3648; 3664) 2206 EXPR_STMT@3648..3664
2207 CALL_EXPR@[3648; 3663) 2207 CALL_EXPR@3648..3663
2208 PATH_EXPR@[3648; 3661) 2208 PATH_EXPR@3648..3661
2209 PATH@[3648; 3661) 2209 PATH@3648..3661
2210 PATH_SEGMENT@[3648; 3661) 2210 PATH_SEGMENT@3648..3661
2211 NAME_REF@[3648; 3661) 2211 NAME_REF@3648..3661
2212 IDENT@[3648; 3661) "canttouchthis" 2212 IDENT@3648..3661 "canttouchthis"
2213 ARG_LIST@[3661; 3663) 2213 ARG_LIST@3661..3663
2214 L_PAREN@[3661; 3662) "(" 2214 L_PAREN@3661..3662 "("
2215 R_PAREN@[3662; 3663) ")" 2215 R_PAREN@3662..3663 ")"
2216 SEMICOLON@[3663; 3664) ";" 2216 SEMICOLON@3663..3664 ";"
2217 WHITESPACE@[3664; 3669) "\n " 2217 WHITESPACE@3664..3669 "\n "
2218 EXPR_STMT@[3669; 3681) 2218 EXPR_STMT@3669..3681
2219 CALL_EXPR@[3669; 3680) 2219 CALL_EXPR@3669..3680
2220 PATH_EXPR@[3669; 3678) 2220 PATH_EXPR@3669..3678
2221 PATH@[3669; 3678) 2221 PATH@3669..3678
2222 PATH_SEGMENT@[3669; 3678) 2222 PATH_SEGMENT@3669..3678
2223 NAME_REF@[3669; 3678) 2223 NAME_REF@3669..3678
2224 IDENT@[3669; 3678) "angrydome" 2224 IDENT@3669..3678 "angrydome"
2225 ARG_LIST@[3678; 3680) 2225 ARG_LIST@3678..3680
2226 L_PAREN@[3678; 3679) "(" 2226 L_PAREN@3678..3679 "("
2227 R_PAREN@[3679; 3680) ")" 2227 R_PAREN@3679..3680 ")"
2228 SEMICOLON@[3680; 3681) ";" 2228 SEMICOLON@3680..3681 ";"
2229 WHITESPACE@[3681; 3686) "\n " 2229 WHITESPACE@3681..3686 "\n "
2230 EXPR_STMT@[3686; 3701) 2230 EXPR_STMT@3686..3701
2231 CALL_EXPR@[3686; 3700) 2231 CALL_EXPR@3686..3700
2232 PATH_EXPR@[3686; 3698) 2232 PATH_EXPR@3686..3698
2233 PATH@[3686; 3698) 2233 PATH@3686..3698
2234 PATH_SEGMENT@[3686; 3698) 2234 PATH_SEGMENT@3686..3698
2235 NAME_REF@[3686; 3698) 2235 NAME_REF@3686..3698
2236 IDENT@[3686; 3698) "evil_lincoln" 2236 IDENT@3686..3698 "evil_lincoln"
2237 ARG_LIST@[3698; 3700) 2237 ARG_LIST@3698..3700
2238 L_PAREN@[3698; 3699) "(" 2238 L_PAREN@3698..3699 "("
2239 R_PAREN@[3699; 3700) ")" 2239 R_PAREN@3699..3700 ")"
2240 SEMICOLON@[3700; 3701) ";" 2240 SEMICOLON@3700..3701 ";"
2241 WHITESPACE@[3701; 3706) "\n " 2241 WHITESPACE@3701..3706 "\n "
2242 EXPR_STMT@[3706; 3713) 2242 EXPR_STMT@3706..3713
2243 CALL_EXPR@[3706; 3712) 2243 CALL_EXPR@3706..3712
2244 PATH_EXPR@[3706; 3710) 2244 PATH_EXPR@3706..3710
2245 PATH@[3706; 3710) 2245 PATH@3706..3710
2246 PATH_SEGMENT@[3706; 3710) 2246 PATH_SEGMENT@3706..3710
2247 NAME_REF@[3706; 3710) 2247 NAME_REF@3706..3710
2248 IDENT@[3706; 3710) "dots" 2248 IDENT@3706..3710 "dots"
2249 ARG_LIST@[3710; 3712) 2249 ARG_LIST@3710..3712
2250 L_PAREN@[3710; 3711) "(" 2250 L_PAREN@3710..3711 "("
2251 R_PAREN@[3711; 3712) ")" 2251 R_PAREN@3711..3712 ")"
2252 SEMICOLON@[3712; 3713) ";" 2252 SEMICOLON@3712..3713 ";"
2253 WHITESPACE@[3713; 3718) "\n " 2253 WHITESPACE@3713..3718 "\n "
2254 EXPR_STMT@[3718; 3726) 2254 EXPR_STMT@3718..3726
2255 CALL_EXPR@[3718; 3725) 2255 CALL_EXPR@3718..3725
2256 PATH_EXPR@[3718; 3720) 2256 PATH_EXPR@3718..3720
2257 PATH@[3718; 3720) 2257 PATH@3718..3720
2258 PATH_SEGMENT@[3718; 3720) 2258 PATH_SEGMENT@3718..3720
2259 NAME_REF@[3718; 3720) 2259 NAME_REF@3718..3720
2260 IDENT@[3718; 3720) "u8" 2260 IDENT@3718..3720 "u8"
2261 ARG_LIST@[3720; 3725) 2261 ARG_LIST@3720..3725
2262 L_PAREN@[3720; 3721) "(" 2262 L_PAREN@3720..3721 "("
2263 LITERAL@[3721; 3724) 2263 LITERAL@3721..3724
2264 INT_NUMBER@[3721; 3724) "8u8" 2264 INT_NUMBER@3721..3724 "8u8"
2265 R_PAREN@[3724; 3725) ")" 2265 R_PAREN@3724..3725 ")"
2266 SEMICOLON@[3725; 3726) ";" 2266 SEMICOLON@3725..3726 ";"
2267 WHITESPACE@[3726; 3731) "\n " 2267 WHITESPACE@3726..3731 "\n "
2268 EXPR_STMT@[3731; 3739) 2268 EXPR_STMT@3731..3739
2269 CALL_EXPR@[3731; 3738) 2269 CALL_EXPR@3731..3738
2270 PATH_EXPR@[3731; 3736) 2270 PATH_EXPR@3731..3736
2271 PATH@[3731; 3736) 2271 PATH@3731..3736
2272 PATH_SEGMENT@[3731; 3736) 2272 PATH_SEGMENT@3731..3736
2273 NAME_REF@[3731; 3736) 2273 NAME_REF@3731..3736
2274 IDENT@[3731; 3736) "fishy" 2274 IDENT@3731..3736 "fishy"
2275 ARG_LIST@[3736; 3738) 2275 ARG_LIST@3736..3738
2276 L_PAREN@[3736; 3737) "(" 2276 L_PAREN@3736..3737 "("
2277 R_PAREN@[3737; 3738) ")" 2277 R_PAREN@3737..3738 ")"
2278 SEMICOLON@[3738; 3739) ";" 2278 SEMICOLON@3738..3739 ";"
2279 WHITESPACE@[3739; 3744) "\n " 2279 WHITESPACE@3739..3744 "\n "
2280 EXPR_STMT@[3744; 3752) 2280 EXPR_STMT@3744..3752
2281 CALL_EXPR@[3744; 3751) 2281 CALL_EXPR@3744..3751
2282 PATH_EXPR@[3744; 3749) 2282 PATH_EXPR@3744..3749
2283 PATH@[3744; 3749) 2283 PATH@3744..3749
2284 PATH_SEGMENT@[3744; 3749) 2284 PATH_SEGMENT@3744..3749
2285 NAME_REF@[3744; 3749) 2285 NAME_REF@3744..3749
2286 IDENT@[3744; 3749) "union" 2286 IDENT@3744..3749 "union"
2287 ARG_LIST@[3749; 3751) 2287 ARG_LIST@3749..3751
2288 L_PAREN@[3749; 3750) "(" 2288 L_PAREN@3749..3750 "("
2289 R_PAREN@[3750; 3751) ")" 2289 R_PAREN@3750..3751 ")"
2290 SEMICOLON@[3751; 3752) ";" 2290 SEMICOLON@3751..3752 ";"
2291 WHITESPACE@[3752; 3757) "\n " 2291 WHITESPACE@3752..3757 "\n "
2292 EXPR_STMT@[3757; 3778) 2292 EXPR_STMT@3757..3778
2293 CALL_EXPR@[3757; 3777) 2293 CALL_EXPR@3757..3777
2294 PATH_EXPR@[3757; 3775) 2294 PATH_EXPR@3757..3775
2295 PATH@[3757; 3775) 2295 PATH@3757..3775
2296 PATH_SEGMENT@[3757; 3775) 2296 PATH_SEGMENT@3757..3775
2297 NAME_REF@[3757; 3775) 2297 NAME_REF@3757..3775
2298 IDENT@[3757; 3775) "special_characters" 2298 IDENT@3757..3775 "special_characters"
2299 ARG_LIST@[3775; 3777) 2299 ARG_LIST@3775..3777
2300 L_PAREN@[3775; 3776) "(" 2300 L_PAREN@3775..3776 "("
2301 R_PAREN@[3776; 3777) ")" 2301 R_PAREN@3776..3777 ")"
2302 SEMICOLON@[3777; 3778) ";" 2302 SEMICOLON@3777..3778 ";"
2303 WHITESPACE@[3778; 3783) "\n " 2303 WHITESPACE@3778..3783 "\n "
2304 EXPR_STMT@[3783; 3796) 2304 EXPR_STMT@3783..3796
2305 CALL_EXPR@[3783; 3795) 2305 CALL_EXPR@3783..3795
2306 PATH_EXPR@[3783; 3793) 2306 PATH_EXPR@3783..3793
2307 PATH@[3783; 3793) 2307 PATH@3783..3793
2308 PATH_SEGMENT@[3783; 3793) 2308 PATH_SEGMENT@3783..3793
2309 NAME_REF@[3783; 3793) 2309 NAME_REF@3783..3793
2310 IDENT@[3783; 3793) "punch_card" 2310 IDENT@3783..3793 "punch_card"
2311 ARG_LIST@[3793; 3795) 2311 ARG_LIST@3793..3795
2312 L_PAREN@[3793; 3794) "(" 2312 L_PAREN@3793..3794 "("
2313 R_PAREN@[3794; 3795) ")" 2313 R_PAREN@3794..3795 ")"
2314 SEMICOLON@[3795; 3796) ";" 2314 SEMICOLON@3795..3796 ";"
2315 WHITESPACE@[3796; 3801) "\n " 2315 WHITESPACE@3796..3801 "\n "
2316 EXPR_STMT@[3801; 3810) 2316 EXPR_STMT@3801..3810
2317 CALL_EXPR@[3801; 3809) 2317 CALL_EXPR@3801..3809
2318 PATH_EXPR@[3801; 3807) 2318 PATH_EXPR@3801..3807
2319 PATH@[3801; 3807) 2319 PATH@3801..3807
2320 PATH_SEGMENT@[3801; 3807) 2320 PATH_SEGMENT@3801..3807
2321 NAME_REF@[3801; 3807) 2321 NAME_REF@3801..3807
2322 IDENT@[3801; 3807) "ktulhu" 2322 IDENT@3801..3807 "ktulhu"
2323 ARG_LIST@[3807; 3809) 2323 ARG_LIST@3807..3809
2324 L_PAREN@[3807; 3808) "(" 2324 L_PAREN@3807..3808 "("
2325 R_PAREN@[3808; 3809) ")" 2325 R_PAREN@3808..3809 ")"
2326 SEMICOLON@[3809; 3810) ";" 2326 SEMICOLON@3809..3810 ";"
2327 WHITESPACE@[3810; 3811) "\n" 2327 WHITESPACE@3810..3811 "\n"
2328 R_CURLY@[3811; 3812) "}" 2328 R_CURLY@3811..3812 "}"
2329 WHITESPACE@[3812; 3813) "\n" 2329 WHITESPACE@3812..3813 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.rast b/crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.rast
index 4df6703f4..8f616623b 100644
--- a/crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.rast
@@ -1,93 +1,93 @@
1SOURCE_FILE@[0; 157) 1SOURCE_FILE@0..157
2 COMMENT@[0; 60) "// https://github.com ..." 2 COMMENT@0..60 "// https://github.com ..."
3 WHITESPACE@[60; 62) "\n\n" 3 WHITESPACE@60..62 "\n\n"
4 FN_DEF@[62; 156) 4 FN_DEF@62..156
5 VISIBILITY@[62; 65) 5 VISIBILITY@62..65
6 PUB_KW@[62; 65) "pub" 6 PUB_KW@62..65 "pub"
7 WHITESPACE@[65; 66) " " 7 WHITESPACE@65..66 " "
8 FN_KW@[66; 68) "fn" 8 FN_KW@66..68 "fn"
9 WHITESPACE@[68; 69) " " 9 WHITESPACE@68..69 " "
10 NAME@[69; 72) 10 NAME@69..72
11 IDENT@[69; 72) "foo" 11 IDENT@69..72 "foo"
12 TYPE_PARAM_LIST@[72; 85) 12 TYPE_PARAM_LIST@72..85
13 L_ANGLE@[72; 73) "<" 13 L_ANGLE@72..73 "<"
14 TYPE_PARAM@[73; 84) 14 TYPE_PARAM@73..84
15 NAME@[73; 74) 15 NAME@73..74
16 IDENT@[73; 74) "S" 16 IDENT@73..74 "S"
17 COLON@[74; 75) ":" 17 COLON@74..75 ":"
18 WHITESPACE@[75; 76) " " 18 WHITESPACE@75..76 " "
19 TYPE_BOUND_LIST@[76; 84) 19 TYPE_BOUND_LIST@76..84
20 TYPE_BOUND@[76; 84) 20 TYPE_BOUND@76..84
21 PATH_TYPE@[76; 84) 21 PATH_TYPE@76..84
22 PATH@[76; 84) 22 PATH@76..84
23 PATH_SEGMENT@[76; 84) 23 PATH_SEGMENT@76..84
24 NAME_REF@[76; 84) 24 NAME_REF@76..84
25 IDENT@[76; 84) "Iterator" 25 IDENT@76..84 "Iterator"
26 R_ANGLE@[84; 85) ">" 26 R_ANGLE@84..85 ">"
27 PARAM_LIST@[85; 87) 27 PARAM_LIST@85..87
28 L_PAREN@[85; 86) "(" 28 L_PAREN@85..86 "("
29 R_PAREN@[86; 87) ")" 29 R_PAREN@86..87 ")"
30 WHITESPACE@[87; 88) " " 30 WHITESPACE@87..88 " "
31 RET_TYPE@[88; 97) 31 RET_TYPE@88..97
32 THIN_ARROW@[88; 90) "->" 32 THIN_ARROW@88..90 "->"
33 WHITESPACE@[90; 91) " " 33 WHITESPACE@90..91 " "
34 PATH_TYPE@[91; 97) 34 PATH_TYPE@91..97
35 PATH@[91; 97) 35 PATH@91..97
36 PATH_SEGMENT@[91; 97) 36 PATH_SEGMENT@91..97
37 NAME_REF@[91; 97) 37 NAME_REF@91..97
38 IDENT@[91; 97) "String" 38 IDENT@91..97 "String"
39 WHITESPACE@[97; 98) "\n" 39 WHITESPACE@97..98 "\n"
40 WHERE_CLAUSE@[98; 134) 40 WHERE_CLAUSE@98..134
41 WHERE_KW@[98; 103) "where" 41 WHERE_KW@98..103 "where"
42 WHITESPACE@[103; 108) "\n " 42 WHITESPACE@103..108 "\n "
43 WHERE_PRED@[108; 133) 43 WHERE_PRED@108..133
44 PATH_TYPE@[108; 129) 44 PATH_TYPE@108..129
45 PATH@[108; 129) 45 PATH@108..129
46 PATH@[108; 123) 46 PATH@108..123
47 PATH_SEGMENT@[108; 123) 47 PATH_SEGMENT@108..123
48 L_ANGLE@[108; 109) "<" 48 L_ANGLE@108..109 "<"
49 PATH_TYPE@[109; 110) 49 PATH_TYPE@109..110
50 PATH@[109; 110) 50 PATH@109..110
51 PATH_SEGMENT@[109; 110) 51 PATH_SEGMENT@109..110
52 NAME_REF@[109; 110) 52 NAME_REF@109..110
53 IDENT@[109; 110) "S" 53 IDENT@109..110 "S"
54 WHITESPACE@[110; 111) " " 54 WHITESPACE@110..111 " "
55 AS_KW@[111; 113) "as" 55 AS_KW@111..113 "as"
56 WHITESPACE@[113; 114) " " 56 WHITESPACE@113..114 " "
57 PATH_TYPE@[114; 122) 57 PATH_TYPE@114..122
58 PATH@[114; 122) 58 PATH@114..122
59 PATH_SEGMENT@[114; 122) 59 PATH_SEGMENT@114..122
60 NAME_REF@[114; 122) 60 NAME_REF@114..122
61 IDENT@[114; 122) "Iterator" 61 IDENT@114..122 "Iterator"
62 R_ANGLE@[122; 123) ">" 62 R_ANGLE@122..123 ">"
63 COLON2@[123; 125) "::" 63 COLON2@123..125 "::"
64 PATH_SEGMENT@[125; 129) 64 PATH_SEGMENT@125..129
65 NAME_REF@[125; 129) 65 NAME_REF@125..129
66 IDENT@[125; 129) "Item" 66 IDENT@125..129 "Item"
67 COLON@[129; 130) ":" 67 COLON@129..130 ":"
68 WHITESPACE@[130; 131) " " 68 WHITESPACE@130..131 " "
69 TYPE_BOUND_LIST@[131; 133) 69 TYPE_BOUND_LIST@131..133
70 TYPE_BOUND@[131; 133) 70 TYPE_BOUND@131..133
71 PATH_TYPE@[131; 133) 71 PATH_TYPE@131..133
72 PATH@[131; 133) 72 PATH@131..133
73 PATH_SEGMENT@[131; 133) 73 PATH_SEGMENT@131..133
74 NAME_REF@[131; 133) 74 NAME_REF@131..133
75 IDENT@[131; 133) "Eq" 75 IDENT@131..133 "Eq"
76 COMMA@[133; 134) "," 76 COMMA@133..134 ","
77 WHITESPACE@[134; 135) "\n" 77 WHITESPACE@134..135 "\n"
78 BLOCK_EXPR@[135; 156) 78 BLOCK_EXPR@135..156
79 BLOCK@[135; 156) 79 BLOCK@135..156
80 L_CURLY@[135; 136) "{" 80 L_CURLY@135..136 "{"
81 WHITESPACE@[136; 141) "\n " 81 WHITESPACE@136..141 "\n "
82 METHOD_CALL_EXPR@[141; 154) 82 METHOD_CALL_EXPR@141..154
83 LITERAL@[141; 143) 83 LITERAL@141..143
84 STRING@[141; 143) "\"\"" 84 STRING@141..143 "\"\""
85 DOT@[143; 144) "." 85 DOT@143..144 "."
86 NAME_REF@[144; 152) 86 NAME_REF@144..152
87 IDENT@[144; 152) "to_owned" 87 IDENT@144..152 "to_owned"
88 ARG_LIST@[152; 154) 88 ARG_LIST@152..154
89 L_PAREN@[152; 153) "(" 89 L_PAREN@152..153 "("
90 R_PAREN@[153; 154) ")" 90 R_PAREN@153..154 ")"
91 WHITESPACE@[154; 155) "\n" 91 WHITESPACE@154..155 "\n"
92 R_CURLY@[155; 156) "}" 92 R_CURLY@155..156 "}"
93 WHITESPACE@[156; 157) "\n" 93 WHITESPACE@156..157 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0037_mod.rast b/crates/ra_syntax/test_data/parser/ok/0037_mod.rast
index 3af40a104..1d5d94bde 100644
--- a/crates/ra_syntax/test_data/parser/ok/0037_mod.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0037_mod.rast
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 93) 1SOURCE_FILE@0..93
2 COMMENT@[0; 60) "// https://github.com ..." 2 COMMENT@0..60 "// https://github.com ..."
3 WHITESPACE@[60; 62) "\n\n" 3 WHITESPACE@60..62 "\n\n"
4 MODULE@[62; 93) 4 MODULE@62..93
5 COMMENT@[62; 70) "//! docs" 5 COMMENT@62..70 "//! docs"
6 WHITESPACE@[70; 71) "\n" 6 WHITESPACE@70..71 "\n"
7 COMMENT@[71; 82) "// non-docs" 7 COMMENT@71..82 "// non-docs"
8 WHITESPACE@[82; 83) "\n" 8 WHITESPACE@82..83 "\n"
9 MOD_KW@[83; 86) "mod" 9 MOD_KW@83..86 "mod"
10 WHITESPACE@[86; 87) " " 10 WHITESPACE@86..87 " "
11 NAME@[87; 90) 11 NAME@87..90
12 IDENT@[87; 90) "foo" 12 IDENT@87..90 "foo"
13 WHITESPACE@[90; 91) " " 13 WHITESPACE@90..91 " "
14 ITEM_LIST@[91; 93) 14 ITEM_LIST@91..93
15 L_CURLY@[91; 92) "{" 15 L_CURLY@91..92 "{"
16 R_CURLY@[92; 93) "}" 16 R_CURLY@92..93 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.rast b/crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.rast
index 377367914..14d82feb0 100644
--- a/crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.rast
@@ -1,43 +1,43 @@
1SOURCE_FILE@[0; 34) 1SOURCE_FILE@0..34
2 FN_DEF@[0; 34) 2 FN_DEF@0..34
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "test" 6 IDENT@3..7 "test"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 WHERE_CLAUSE@[10; 31) 11 WHERE_CLAUSE@10..31
12 WHERE_KW@[10; 15) "where" 12 WHERE_KW@10..15 "where"
13 WHITESPACE@[15; 16) " " 13 WHITESPACE@15..16 " "
14 WHERE_PRED@[16; 31) 14 WHERE_PRED@16..31
15 TUPLE_TYPE@[16; 26) 15 TUPLE_TYPE@16..26
16 L_PAREN@[16; 17) "(" 16 L_PAREN@16..17 "("
17 PATH_TYPE@[17; 20) 17 PATH_TYPE@17..20
18 PATH@[17; 20) 18 PATH@17..20
19 PATH_SEGMENT@[17; 20) 19 PATH_SEGMENT@17..20
20 NAME_REF@[17; 20) 20 NAME_REF@17..20
21 IDENT@[17; 20) "u64" 21 IDENT@17..20 "u64"
22 COMMA@[20; 21) "," 22 COMMA@20..21 ","
23 WHITESPACE@[21; 22) " " 23 WHITESPACE@21..22 " "
24 PATH_TYPE@[22; 25) 24 PATH_TYPE@22..25
25 PATH@[22; 25) 25 PATH@22..25
26 PATH_SEGMENT@[22; 25) 26 PATH_SEGMENT@22..25
27 NAME_REF@[22; 25) 27 NAME_REF@22..25
28 IDENT@[22; 25) "u64" 28 IDENT@22..25 "u64"
29 R_PAREN@[25; 26) ")" 29 R_PAREN@25..26 ")"
30 COLON@[26; 27) ":" 30 COLON@26..27 ":"
31 WHITESPACE@[27; 28) " " 31 WHITESPACE@27..28 " "
32 TYPE_BOUND_LIST@[28; 31) 32 TYPE_BOUND_LIST@28..31
33 TYPE_BOUND@[28; 31) 33 TYPE_BOUND@28..31
34 PATH_TYPE@[28; 31) 34 PATH_TYPE@28..31
35 PATH@[28; 31) 35 PATH@28..31
36 PATH_SEGMENT@[28; 31) 36 PATH_SEGMENT@28..31
37 NAME_REF@[28; 31) 37 NAME_REF@28..31
38 IDENT@[28; 31) "Foo" 38 IDENT@28..31 "Foo"
39 WHITESPACE@[31; 32) " " 39 WHITESPACE@31..32 " "
40 BLOCK_EXPR@[32; 34) 40 BLOCK_EXPR@32..34
41 BLOCK@[32; 34) 41 BLOCK@32..34
42 L_CURLY@[32; 33) "{" 42 L_CURLY@32..33 "{"
43 R_CURLY@[33; 34) "}" 43 R_CURLY@33..34 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.rast b/crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.rast
index 9936892e9..d38a60665 100644
--- a/crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.rast
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 15) 1SOURCE_FILE@0..15
2 FN_DEF@[0; 14) 2 FN_DEF@0..14
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 8) 5 NAME@3..8
6 IDENT@[3; 8) "r#foo" 6 IDENT@3..8 "r#foo"
7 PARAM_LIST@[8; 10) 7 PARAM_LIST@8..10
8 L_PAREN@[8; 9) "(" 8 L_PAREN@8..9 "("
9 R_PAREN@[9; 10) ")" 9 R_PAREN@9..10 ")"
10 WHITESPACE@[10; 11) " " 10 WHITESPACE@10..11 " "
11 BLOCK_EXPR@[11; 14) 11 BLOCK_EXPR@11..14
12 BLOCK@[11; 14) 12 BLOCK@11..14
13 L_CURLY@[11; 12) "{" 13 L_CURLY@11..12 "{"
14 WHITESPACE@[12; 13) "\n" 14 WHITESPACE@12..13 "\n"
15 R_CURLY@[13; 14) "}" 15 R_CURLY@13..14 "}"
16 WHITESPACE@[14; 15) "\n" 16 WHITESPACE@14..15 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.rast b/crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.rast
index 05f2c656f..5640bae0a 100644
--- a/crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0040_raw_struct_item_field.rast
@@ -1,22 +1,22 @@
1SOURCE_FILE@[0; 27) 1SOURCE_FILE@0..27
2 STRUCT_DEF@[0; 27) 2 STRUCT_DEF@0..27
3 STRUCT_KW@[0; 6) "struct" 3 STRUCT_KW@0..6 "struct"
4 WHITESPACE@[6; 7) " " 4 WHITESPACE@6..7 " "
5 NAME@[7; 8) 5 NAME@7..8
6 IDENT@[7; 8) "S" 6 IDENT@7..8 "S"
7 WHITESPACE@[8; 9) " " 7 WHITESPACE@8..9 " "
8 RECORD_FIELD_DEF_LIST@[9; 27) 8 RECORD_FIELD_DEF_LIST@9..27
9 L_CURLY@[9; 10) "{" 9 L_CURLY@9..10 "{"
10 WHITESPACE@[10; 15) "\n " 10 WHITESPACE@10..15 "\n "
11 RECORD_FIELD_DEF@[15; 25) 11 RECORD_FIELD_DEF@15..25
12 NAME@[15; 20) 12 NAME@15..20
13 IDENT@[15; 20) "r#foo" 13 IDENT@15..20 "r#foo"
14 COLON@[20; 21) ":" 14 COLON@20..21 ":"
15 WHITESPACE@[21; 22) " " 15 WHITESPACE@21..22 " "
16 PATH_TYPE@[22; 25) 16 PATH_TYPE@22..25
17 PATH@[22; 25) 17 PATH@22..25
18 PATH_SEGMENT@[22; 25) 18 PATH_SEGMENT@22..25
19 NAME_REF@[22; 25) 19 NAME_REF@22..25
20 IDENT@[22; 25) "u32" 20 IDENT@22..25 "u32"
21 WHITESPACE@[25; 26) "\n" 21 WHITESPACE@25..26 "\n"
22 R_CURLY@[26; 27) "}" 22 R_CURLY@26..27 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.rast b/crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.rast
index 825518eda..db25bc2b8 100644
--- a/crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.rast
@@ -1,50 +1,50 @@
1SOURCE_FILE@[0; 59) 1SOURCE_FILE@0..59
2 FN_DEF@[0; 59) 2 FN_DEF@0..59
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 59) 11 BLOCK_EXPR@9..59
12 BLOCK@[9; 59) 12 BLOCK@9..59
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 11) " " 14 WHITESPACE@10..11 " "
15 LET_STMT@[11; 29) 15 LET_STMT@11..29
16 LET_KW@[11; 14) "let" 16 LET_KW@11..14 "let"
17 WHITESPACE@[14; 15) " " 17 WHITESPACE@14..15 " "
18 BIND_PAT@[15; 23) 18 BIND_PAT@15..23
19 NAME@[15; 23) 19 NAME@15..23
20 IDENT@[15; 23) "r#struct" 20 IDENT@15..23 "r#struct"
21 WHITESPACE@[23; 24) " " 21 WHITESPACE@23..24 " "
22 EQ@[24; 25) "=" 22 EQ@24..25 "="
23 WHITESPACE@[25; 26) " " 23 WHITESPACE@25..26 " "
24 LITERAL@[26; 28) 24 LITERAL@26..28
25 INT_NUMBER@[26; 28) "92" 25 INT_NUMBER@26..28 "92"
26 SEMICOLON@[28; 29) ";" 26 SEMICOLON@28..29 ";"
27 WHITESPACE@[29; 30) " " 27 WHITESPACE@29..30 " "
28 LET_STMT@[30; 57) 28 LET_STMT@30..57
29 LET_KW@[30; 33) "let" 29 LET_KW@30..33 "let"
30 WHITESPACE@[33; 34) " " 30 WHITESPACE@33..34 " "
31 BIND_PAT@[34; 41) 31 BIND_PAT@34..41
32 NAME@[34; 41) 32 NAME@34..41
33 IDENT@[34; 41) "r#trait" 33 IDENT@34..41 "r#trait"
34 WHITESPACE@[41; 42) " " 34 WHITESPACE@41..42 " "
35 EQ@[42; 43) "=" 35 EQ@42..43 "="
36 WHITESPACE@[43; 44) " " 36 WHITESPACE@43..44 " "
37 BIN_EXPR@[44; 56) 37 BIN_EXPR@44..56
38 PATH_EXPR@[44; 52) 38 PATH_EXPR@44..52
39 PATH@[44; 52) 39 PATH@44..52
40 PATH_SEGMENT@[44; 52) 40 PATH_SEGMENT@44..52
41 NAME_REF@[44; 52) 41 NAME_REF@44..52
42 IDENT@[44; 52) "r#struct" 42 IDENT@44..52 "r#struct"
43 WHITESPACE@[52; 53) " " 43 WHITESPACE@52..53 " "
44 STAR@[53; 54) "*" 44 STAR@53..54 "*"
45 WHITESPACE@[54; 55) " " 45 WHITESPACE@54..55 " "
46 LITERAL@[55; 56) 46 LITERAL@55..56
47 INT_NUMBER@[55; 56) "2" 47 INT_NUMBER@55..56 "2"
48 SEMICOLON@[56; 57) ";" 48 SEMICOLON@56..57 ";"
49 WHITESPACE@[57; 58) " " 49 WHITESPACE@57..58 " "
50 R_CURLY@[58; 59) "}" 50 R_CURLY@58..59 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.rast b/crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.rast
index 420a62639..9704bea95 100644
--- a/crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.rast
@@ -1,126 +1,126 @@
1SOURCE_FILE@[0; 199) 1SOURCE_FILE@0..199
2 COMMENT@[0; 60) "// https://github.com ..." 2 COMMENT@0..60 "// https://github.com ..."
3 WHITESPACE@[60; 62) "\n\n" 3 WHITESPACE@60..62 "\n\n"
4 STRUCT_DEF@[62; 73) 4 STRUCT_DEF@62..73
5 STRUCT_KW@[62; 68) "struct" 5 STRUCT_KW@62..68 "struct"
6 WHITESPACE@[68; 69) " " 6 WHITESPACE@68..69 " "
7 NAME@[69; 72) 7 NAME@69..72
8 IDENT@[69; 72) "Foo" 8 IDENT@69..72 "Foo"
9 SEMICOLON@[72; 73) ";" 9 SEMICOLON@72..73 ";"
10 WHITESPACE@[73; 75) "\n\n" 10 WHITESPACE@73..75 "\n\n"
11 IMPL_DEF@[75; 141) 11 IMPL_DEF@75..141
12 IMPL_KW@[75; 79) "impl" 12 IMPL_KW@75..79 "impl"
13 WHITESPACE@[79; 80) " " 13 WHITESPACE@79..80 " "
14 PATH_TYPE@[80; 83) 14 PATH_TYPE@80..83
15 PATH@[80; 83) 15 PATH@80..83
16 PATH_SEGMENT@[80; 83) 16 PATH_SEGMENT@80..83
17 NAME_REF@[80; 83) 17 NAME_REF@80..83
18 IDENT@[80; 83) "Foo" 18 IDENT@80..83 "Foo"
19 WHITESPACE@[83; 84) " " 19 WHITESPACE@83..84 " "
20 ITEM_LIST@[84; 141) 20 ITEM_LIST@84..141
21 L_CURLY@[84; 85) "{" 21 L_CURLY@84..85 "{"
22 WHITESPACE@[85; 90) "\n " 22 WHITESPACE@85..90 "\n "
23 FN_DEF@[90; 139) 23 FN_DEF@90..139
24 FN_KW@[90; 92) "fn" 24 FN_KW@90..92 "fn"
25 WHITESPACE@[92; 93) " " 25 WHITESPACE@92..93 " "
26 NAME@[93; 96) 26 NAME@93..96
27 IDENT@[93; 96) "bar" 27 IDENT@93..96 "bar"
28 PARAM_LIST@[96; 98) 28 PARAM_LIST@96..98
29 L_PAREN@[96; 97) "(" 29 L_PAREN@96..97 "("
30 R_PAREN@[97; 98) ")" 30 R_PAREN@97..98 ")"
31 WHITESPACE@[98; 99) " " 31 WHITESPACE@98..99 " "
32 RET_TYPE@[99; 106) 32 RET_TYPE@99..106
33 THIN_ARROW@[99; 101) "->" 33 THIN_ARROW@99..101 "->"
34 WHITESPACE@[101; 102) " " 34 WHITESPACE@101..102 " "
35 PATH_TYPE@[102; 106) 35 PATH_TYPE@102..106
36 PATH@[102; 106) 36 PATH@102..106
37 PATH_SEGMENT@[102; 106) 37 PATH_SEGMENT@102..106
38 NAME_REF@[102; 106) 38 NAME_REF@102..106
39 IDENT@[102; 106) "bool" 39 IDENT@102..106 "bool"
40 WHITESPACE@[106; 107) " " 40 WHITESPACE@106..107 " "
41 BLOCK_EXPR@[107; 139) 41 BLOCK_EXPR@107..139
42 BLOCK@[107; 139) 42 BLOCK@107..139
43 L_CURLY@[107; 108) "{" 43 L_CURLY@107..108 "{"
44 WHITESPACE@[108; 117) "\n " 44 WHITESPACE@108..117 "\n "
45 MACRO_CALL@[117; 133) 45 MACRO_CALL@117..133
46 PATH@[117; 130) 46 PATH@117..130
47 PATH_SEGMENT@[117; 130) 47 PATH_SEGMENT@117..130
48 NAME_REF@[117; 130) 48 NAME_REF@117..130
49 IDENT@[117; 130) "unimplemented" 49 IDENT@117..130 "unimplemented"
50 BANG@[130; 131) "!" 50 BANG@130..131 "!"
51 TOKEN_TREE@[131; 133) 51 TOKEN_TREE@131..133
52 L_PAREN@[131; 132) "(" 52 L_PAREN@131..132 "("
53 R_PAREN@[132; 133) ")" 53 R_PAREN@132..133 ")"
54 WHITESPACE@[133; 138) "\n " 54 WHITESPACE@133..138 "\n "
55 R_CURLY@[138; 139) "}" 55 R_CURLY@138..139 "}"
56 WHITESPACE@[139; 140) "\n" 56 WHITESPACE@139..140 "\n"
57 R_CURLY@[140; 141) "}" 57 R_CURLY@140..141 "}"
58 WHITESPACE@[141; 143) "\n\n" 58 WHITESPACE@141..143 "\n\n"
59 FN_DEF@[143; 161) 59 FN_DEF@143..161
60 FN_KW@[143; 145) "fn" 60 FN_KW@143..145 "fn"
61 WHITESPACE@[145; 146) " " 61 WHITESPACE@145..146 " "
62 NAME@[146; 149) 62 NAME@146..149
63 IDENT@[146; 149) "baz" 63 IDENT@146..149 "baz"
64 PARAM_LIST@[149; 158) 64 PARAM_LIST@149..158
65 L_PAREN@[149; 150) "(" 65 L_PAREN@149..150 "("
66 PARAM@[150; 157) 66 PARAM@150..157
67 PLACEHOLDER_PAT@[150; 151) 67 PLACEHOLDER_PAT@150..151
68 UNDERSCORE@[150; 151) "_" 68 UNDERSCORE@150..151 "_"
69 COLON@[151; 152) ":" 69 COLON@151..152 ":"
70 WHITESPACE@[152; 153) " " 70 WHITESPACE@152..153 " "
71 PATH_TYPE@[153; 157) 71 PATH_TYPE@153..157
72 PATH@[153; 157) 72 PATH@153..157
73 PATH_SEGMENT@[153; 157) 73 PATH_SEGMENT@153..157
74 NAME_REF@[153; 157) 74 NAME_REF@153..157
75 IDENT@[153; 157) "bool" 75 IDENT@153..157 "bool"
76 R_PAREN@[157; 158) ")" 76 R_PAREN@157..158 ")"
77 WHITESPACE@[158; 159) " " 77 WHITESPACE@158..159 " "
78 BLOCK_EXPR@[159; 161) 78 BLOCK_EXPR@159..161
79 BLOCK@[159; 161) 79 BLOCK@159..161
80 L_CURLY@[159; 160) "{" 80 L_CURLY@159..160 "{"
81 R_CURLY@[160; 161) "}" 81 R_CURLY@160..161 "}"
82 WHITESPACE@[161; 163) "\n\n" 82 WHITESPACE@161..163 "\n\n"
83 FN_DEF@[163; 198) 83 FN_DEF@163..198
84 FN_KW@[163; 165) "fn" 84 FN_KW@163..165 "fn"
85 WHITESPACE@[165; 166) " " 85 WHITESPACE@165..166 " "
86 NAME@[166; 170) 86 NAME@166..170
87 IDENT@[166; 170) "main" 87 IDENT@166..170 "main"
88 PARAM_LIST@[170; 172) 88 PARAM_LIST@170..172
89 L_PAREN@[170; 171) "(" 89 L_PAREN@170..171 "("
90 R_PAREN@[171; 172) ")" 90 R_PAREN@171..172 ")"
91 WHITESPACE@[172; 173) " " 91 WHITESPACE@172..173 " "
92 BLOCK_EXPR@[173; 198) 92 BLOCK_EXPR@173..198
93 BLOCK@[173; 198) 93 BLOCK@173..198
94 L_CURLY@[173; 174) "{" 94 L_CURLY@173..174 "{"
95 WHITESPACE@[174; 179) "\n " 95 WHITESPACE@174..179 "\n "
96 CALL_EXPR@[179; 196) 96 CALL_EXPR@179..196
97 PATH_EXPR@[179; 182) 97 PATH_EXPR@179..182
98 PATH@[179; 182) 98 PATH@179..182
99 PATH_SEGMENT@[179; 182) 99 PATH_SEGMENT@179..182
100 NAME_REF@[179; 182) 100 NAME_REF@179..182
101 IDENT@[179; 182) "baz" 101 IDENT@179..182 "baz"
102 ARG_LIST@[182; 196) 102 ARG_LIST@182..196
103 L_PAREN@[182; 183) "(" 103 L_PAREN@182..183 "("
104 CALL_EXPR@[183; 195) 104 CALL_EXPR@183..195
105 PATH_EXPR@[183; 193) 105 PATH_EXPR@183..193
106 PATH@[183; 193) 106 PATH@183..193
107 PATH@[183; 188) 107 PATH@183..188
108 PATH_SEGMENT@[183; 188) 108 PATH_SEGMENT@183..188
109 L_ANGLE@[183; 184) "<" 109 L_ANGLE@183..184 "<"
110 PATH_TYPE@[184; 187) 110 PATH_TYPE@184..187
111 PATH@[184; 187) 111 PATH@184..187
112 PATH_SEGMENT@[184; 187) 112 PATH_SEGMENT@184..187
113 NAME_REF@[184; 187) 113 NAME_REF@184..187
114 IDENT@[184; 187) "Foo" 114 IDENT@184..187 "Foo"
115 R_ANGLE@[187; 188) ">" 115 R_ANGLE@187..188 ">"
116 COLON2@[188; 190) "::" 116 COLON2@188..190 "::"
117 PATH_SEGMENT@[190; 193) 117 PATH_SEGMENT@190..193
118 NAME_REF@[190; 193) 118 NAME_REF@190..193
119 IDENT@[190; 193) "bar" 119 IDENT@190..193 "bar"
120 ARG_LIST@[193; 195) 120 ARG_LIST@193..195
121 L_PAREN@[193; 194) "(" 121 L_PAREN@193..194 "("
122 R_PAREN@[194; 195) ")" 122 R_PAREN@194..195 ")"
123 R_PAREN@[195; 196) ")" 123 R_PAREN@195..196 ")"
124 WHITESPACE@[196; 197) "\n" 124 WHITESPACE@196..197 "\n"
125 R_CURLY@[197; 198) "}" 125 R_CURLY@197..198 "}"
126 WHITESPACE@[198; 199) "\n" 126 WHITESPACE@198..199 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.rast b/crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.rast
index 3bc0ddbde..6e5b25748 100644
--- a/crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.rast
@@ -1,110 +1,110 @@
1SOURCE_FILE@[0; 160) 1SOURCE_FILE@0..160
2 COMMENT@[0; 60) "// https://github.com ..." 2 COMMENT@0..60 "// https://github.com ..."
3 WHITESPACE@[60; 62) "\n\n" 3 WHITESPACE@60..62 "\n\n"
4 STRUCT_DEF@[62; 90) 4 STRUCT_DEF@62..90
5 STRUCT_KW@[62; 68) "struct" 5 STRUCT_KW@62..68 "struct"
6 WHITESPACE@[68; 69) " " 6 WHITESPACE@68..69 " "
7 NAME@[69; 73) 7 NAME@69..73
8 IDENT@[69; 73) "Repr" 8 IDENT@69..73 "Repr"
9 WHITESPACE@[73; 74) " " 9 WHITESPACE@73..74 " "
10 RECORD_FIELD_DEF_LIST@[74; 90) 10 RECORD_FIELD_DEF_LIST@74..90
11 L_CURLY@[74; 75) "{" 11 L_CURLY@74..75 "{"
12 WHITESPACE@[75; 76) " " 12 WHITESPACE@75..76 " "
13 RECORD_FIELD_DEF@[76; 88) 13 RECORD_FIELD_DEF@76..88
14 NAME@[76; 79) 14 NAME@76..79
15 IDENT@[76; 79) "raw" 15 IDENT@76..79 "raw"
16 COLON@[79; 80) ":" 16 COLON@79..80 ":"
17 WHITESPACE@[80; 81) " " 17 WHITESPACE@80..81 " "
18 ARRAY_TYPE@[81; 88) 18 ARRAY_TYPE@81..88
19 L_BRACK@[81; 82) "[" 19 L_BRACK@81..82 "["
20 PATH_TYPE@[82; 84) 20 PATH_TYPE@82..84
21 PATH@[82; 84) 21 PATH@82..84
22 PATH_SEGMENT@[82; 84) 22 PATH_SEGMENT@82..84
23 NAME_REF@[82; 84) 23 NAME_REF@82..84
24 IDENT@[82; 84) "u8" 24 IDENT@82..84 "u8"
25 SEMICOLON@[84; 85) ";" 25 SEMICOLON@84..85 ";"
26 WHITESPACE@[85; 86) " " 26 WHITESPACE@85..86 " "
27 LITERAL@[86; 87) 27 LITERAL@86..87
28 INT_NUMBER@[86; 87) "1" 28 INT_NUMBER@86..87 "1"
29 R_BRACK@[87; 88) "]" 29 R_BRACK@87..88 "]"
30 WHITESPACE@[88; 89) " " 30 WHITESPACE@88..89 " "
31 R_CURLY@[89; 90) "}" 31 R_CURLY@89..90 "}"
32 WHITESPACE@[90; 92) "\n\n" 32 WHITESPACE@90..92 "\n\n"
33 FN_DEF@[92; 159) 33 FN_DEF@92..159
34 FN_KW@[92; 94) "fn" 34 FN_KW@92..94 "fn"
35 WHITESPACE@[94; 95) " " 35 WHITESPACE@94..95 " "
36 NAME@[95; 98) 36 NAME@95..98
37 IDENT@[95; 98) "abc" 37 IDENT@95..98 "abc"
38 PARAM_LIST@[98; 100) 38 PARAM_LIST@98..100
39 L_PAREN@[98; 99) "(" 39 L_PAREN@98..99 "("
40 R_PAREN@[99; 100) ")" 40 R_PAREN@99..100 ")"
41 WHITESPACE@[100; 101) " " 41 WHITESPACE@100..101 " "
42 BLOCK_EXPR@[101; 159) 42 BLOCK_EXPR@101..159
43 BLOCK@[101; 159) 43 BLOCK@101..159
44 L_CURLY@[101; 102) "{" 44 L_CURLY@101..102 "{"
45 WHITESPACE@[102; 107) "\n " 45 WHITESPACE@102..107 "\n "
46 EXPR_STMT@[107; 136) 46 EXPR_STMT@107..136
47 BIN_EXPR@[107; 135) 47 BIN_EXPR@107..135
48 INDEX_EXPR@[107; 131) 48 INDEX_EXPR@107..131
49 FIELD_EXPR@[107; 128) 49 FIELD_EXPR@107..128
50 RECORD_LIT@[107; 124) 50 RECORD_LIT@107..124
51 PATH@[107; 111) 51 PATH@107..111
52 PATH_SEGMENT@[107; 111) 52 PATH_SEGMENT@107..111
53 NAME_REF@[107; 111) 53 NAME_REF@107..111
54 IDENT@[107; 111) "Repr" 54 IDENT@107..111 "Repr"
55 WHITESPACE@[111; 112) " " 55 WHITESPACE@111..112 " "
56 RECORD_FIELD_LIST@[112; 124) 56 RECORD_FIELD_LIST@112..124
57 L_CURLY@[112; 113) "{" 57 L_CURLY@112..113 "{"
58 WHITESPACE@[113; 114) " " 58 WHITESPACE@113..114 " "
59 RECORD_FIELD@[114; 122) 59 RECORD_FIELD@114..122
60 NAME_REF@[114; 117) 60 NAME_REF@114..117
61 IDENT@[114; 117) "raw" 61 IDENT@114..117 "raw"
62 COLON@[117; 118) ":" 62 COLON@117..118 ":"
63 WHITESPACE@[118; 119) " " 63 WHITESPACE@118..119 " "
64 ARRAY_EXPR@[119; 122) 64 ARRAY_EXPR@119..122
65 L_BRACK@[119; 120) "[" 65 L_BRACK@119..120 "["
66 LITERAL@[120; 121) 66 LITERAL@120..121
67 INT_NUMBER@[120; 121) "0" 67 INT_NUMBER@120..121 "0"
68 R_BRACK@[121; 122) "]" 68 R_BRACK@121..122 "]"
69 WHITESPACE@[122; 123) " " 69 WHITESPACE@122..123 " "
70 R_CURLY@[123; 124) "}" 70 R_CURLY@123..124 "}"
71 DOT@[124; 125) "." 71 DOT@124..125 "."
72 NAME_REF@[125; 128) 72 NAME_REF@125..128
73 IDENT@[125; 128) "raw" 73 IDENT@125..128 "raw"
74 L_BRACK@[128; 129) "[" 74 L_BRACK@128..129 "["
75 LITERAL@[129; 130) 75 LITERAL@129..130
76 INT_NUMBER@[129; 130) "0" 76 INT_NUMBER@129..130 "0"
77 R_BRACK@[130; 131) "]" 77 R_BRACK@130..131 "]"
78 WHITESPACE@[131; 132) " " 78 WHITESPACE@131..132 " "
79 EQ@[132; 133) "=" 79 EQ@132..133 "="
80 WHITESPACE@[133; 134) " " 80 WHITESPACE@133..134 " "
81 LITERAL@[134; 135) 81 LITERAL@134..135
82 INT_NUMBER@[134; 135) "0" 82 INT_NUMBER@134..135 "0"
83 SEMICOLON@[135; 136) ";" 83 SEMICOLON@135..136 ";"
84 WHITESPACE@[136; 141) "\n " 84 WHITESPACE@136..141 "\n "
85 EXPR_STMT@[141; 157) 85 EXPR_STMT@141..157
86 CALL_EXPR@[141; 156) 86 CALL_EXPR@141..156
87 RECORD_LIT@[141; 154) 87 RECORD_LIT@141..154
88 PATH@[141; 145) 88 PATH@141..145
89 PATH_SEGMENT@[141; 145) 89 PATH_SEGMENT@141..145
90 NAME_REF@[141; 145) 90 NAME_REF@141..145
91 IDENT@[141; 145) "Repr" 91 IDENT@141..145 "Repr"
92 RECORD_FIELD_LIST@[145; 154) 92 RECORD_FIELD_LIST@145..154
93 L_CURLY@[145; 146) "{" 93 L_CURLY@145..146 "{"
94 RECORD_FIELD@[146; 153) 94 RECORD_FIELD@146..153
95 NAME_REF@[146; 149) 95 NAME_REF@146..149
96 IDENT@[146; 149) "raw" 96 IDENT@146..149 "raw"
97 COLON@[149; 150) ":" 97 COLON@149..150 ":"
98 ARRAY_EXPR@[150; 153) 98 ARRAY_EXPR@150..153
99 L_BRACK@[150; 151) "[" 99 L_BRACK@150..151 "["
100 LITERAL@[151; 152) 100 LITERAL@151..152
101 INT_NUMBER@[151; 152) "0" 101 INT_NUMBER@151..152 "0"
102 R_BRACK@[152; 153) "]" 102 R_BRACK@152..153 "]"
103 R_CURLY@[153; 154) "}" 103 R_CURLY@153..154 "}"
104 ARG_LIST@[154; 156) 104 ARG_LIST@154..156
105 L_PAREN@[154; 155) "(" 105 L_PAREN@154..155 "("
106 R_PAREN@[155; 156) ")" 106 R_PAREN@155..156 ")"
107 SEMICOLON@[156; 157) ";" 107 SEMICOLON@156..157 ";"
108 WHITESPACE@[157; 158) "\n" 108 WHITESPACE@157..158 "\n"
109 R_CURLY@[158; 159) "}" 109 R_CURLY@158..159 "}"
110 WHITESPACE@[159; 160) "\n" 110 WHITESPACE@159..160 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0044_let_attrs.rast b/crates/ra_syntax/test_data/parser/ok/0044_let_attrs.rast
index 4b2593147..f1eef3be0 100644
--- a/crates/ra_syntax/test_data/parser/ok/0044_let_attrs.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0044_let_attrs.rast
@@ -1,76 +1,76 @@
1SOURCE_FILE@[0; 166) 1SOURCE_FILE@0..166
2 FN_DEF@[0; 165) 2 FN_DEF@0..165
3 COMMENT@[0; 60) "// https://github.com ..." 3 COMMENT@0..60 "// https://github.com ..."
4 WHITESPACE@[60; 61) "\n" 4 WHITESPACE@60..61 "\n"
5 FN_KW@[61; 63) "fn" 5 FN_KW@61..63 "fn"
6 WHITESPACE@[63; 64) " " 6 WHITESPACE@63..64 " "
7 NAME@[64; 68) 7 NAME@64..68
8 IDENT@[64; 68) "main" 8 IDENT@64..68 "main"
9 PARAM_LIST@[68; 70) 9 PARAM_LIST@68..70
10 L_PAREN@[68; 69) "(" 10 L_PAREN@68..69 "("
11 R_PAREN@[69; 70) ")" 11 R_PAREN@69..70 ")"
12 WHITESPACE@[70; 71) " " 12 WHITESPACE@70..71 " "
13 BLOCK_EXPR@[71; 165) 13 BLOCK_EXPR@71..165
14 BLOCK@[71; 165) 14 BLOCK@71..165
15 L_CURLY@[71; 72) "{" 15 L_CURLY@71..72 "{"
16 WHITESPACE@[72; 77) "\n " 16 WHITESPACE@72..77 "\n "
17 LET_STMT@[77; 163) 17 LET_STMT@77..163
18 ATTR@[77; 106) 18 ATTR@77..106
19 POUND@[77; 78) "#" 19 POUND@77..78 "#"
20 L_BRACK@[78; 79) "[" 20 L_BRACK@78..79 "["
21 PATH@[79; 82) 21 PATH@79..82
22 PATH_SEGMENT@[79; 82) 22 PATH_SEGMENT@79..82
23 NAME_REF@[79; 82) 23 NAME_REF@79..82
24 IDENT@[79; 82) "cfg" 24 IDENT@79..82 "cfg"
25 TOKEN_TREE@[82; 105) 25 TOKEN_TREE@82..105
26 L_PAREN@[82; 83) "(" 26 L_PAREN@82..83 "("
27 IDENT@[83; 90) "feature" 27 IDENT@83..90 "feature"
28 WHITESPACE@[90; 91) " " 28 WHITESPACE@90..91 " "
29 EQ@[91; 92) "=" 29 EQ@91..92 "="
30 WHITESPACE@[92; 93) " " 30 WHITESPACE@92..93 " "
31 STRING@[93; 104) "\"backtrace\"" 31 STRING@93..104 "\"backtrace\""
32 R_PAREN@[104; 105) ")" 32 R_PAREN@104..105 ")"
33 R_BRACK@[105; 106) "]" 33 R_BRACK@105..106 "]"
34 WHITESPACE@[106; 111) "\n " 34 WHITESPACE@106..111 "\n "
35 LET_KW@[111; 114) "let" 35 LET_KW@111..114 "let"
36 WHITESPACE@[114; 115) " " 36 WHITESPACE@114..115 " "
37 BIND_PAT@[115; 124) 37 BIND_PAT@115..124
38 NAME@[115; 124) 38 NAME@115..124
39 IDENT@[115; 124) "exit_code" 39 IDENT@115..124 "exit_code"
40 WHITESPACE@[124; 125) " " 40 WHITESPACE@124..125 " "
41 EQ@[125; 126) "=" 41 EQ@125..126 "="
42 WHITESPACE@[126; 127) " " 42 WHITESPACE@126..127 " "
43 CALL_EXPR@[127; 162) 43 CALL_EXPR@127..162
44 PATH_EXPR@[127; 146) 44 PATH_EXPR@127..146
45 PATH@[127; 146) 45 PATH@127..146
46 PATH@[127; 132) 46 PATH@127..132
47 PATH_SEGMENT@[127; 132) 47 PATH_SEGMENT@127..132
48 NAME_REF@[127; 132) 48 NAME_REF@127..132
49 IDENT@[127; 132) "panic" 49 IDENT@127..132 "panic"
50 COLON2@[132; 134) "::" 50 COLON2@132..134 "::"
51 PATH_SEGMENT@[134; 146) 51 PATH_SEGMENT@134..146
52 NAME_REF@[134; 146) 52 NAME_REF@134..146
53 IDENT@[134; 146) "catch_unwind" 53 IDENT@134..146 "catch_unwind"
54 ARG_LIST@[146; 162) 54 ARG_LIST@146..162
55 L_PAREN@[146; 147) "(" 55 L_PAREN@146..147 "("
56 LAMBDA_EXPR@[147; 161) 56 LAMBDA_EXPR@147..161
57 MOVE_KW@[147; 151) "move" 57 MOVE_KW@147..151 "move"
58 WHITESPACE@[151; 152) " " 58 WHITESPACE@151..152 " "
59 PARAM_LIST@[152; 154) 59 PARAM_LIST@152..154
60 PIPE@[152; 153) "|" 60 PIPE@152..153 "|"
61 PIPE@[153; 154) "|" 61 PIPE@153..154 "|"
62 WHITESPACE@[154; 155) " " 62 WHITESPACE@154..155 " "
63 CALL_EXPR@[155; 161) 63 CALL_EXPR@155..161
64 PATH_EXPR@[155; 159) 64 PATH_EXPR@155..159
65 PATH@[155; 159) 65 PATH@155..159
66 PATH_SEGMENT@[155; 159) 66 PATH_SEGMENT@155..159
67 NAME_REF@[155; 159) 67 NAME_REF@155..159
68 IDENT@[155; 159) "main" 68 IDENT@155..159 "main"
69 ARG_LIST@[159; 161) 69 ARG_LIST@159..161
70 L_PAREN@[159; 160) "(" 70 L_PAREN@159..160 "("
71 R_PAREN@[160; 161) ")" 71 R_PAREN@160..161 ")"
72 R_PAREN@[161; 162) ")" 72 R_PAREN@161..162 ")"
73 SEMICOLON@[162; 163) ";" 73 SEMICOLON@162..163 ";"
74 WHITESPACE@[163; 164) "\n" 74 WHITESPACE@163..164 "\n"
75 R_CURLY@[164; 165) "}" 75 R_CURLY@164..165 "}"
76 WHITESPACE@[165; 166) "\n" 76 WHITESPACE@165..166 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.rast b/crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.rast
index 954b3bc2a..f79feec19 100644
--- a/crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.rast
@@ -1,181 +1,181 @@
1SOURCE_FILE@[0; 686) 1SOURCE_FILE@0..686
2 FN_DEF@[0; 461) 2 FN_DEF@0..461
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 8) 5 NAME@3..8
6 IDENT@[3; 8) "block" 6 IDENT@3..8 "block"
7 PARAM_LIST@[8; 10) 7 PARAM_LIST@8..10
8 L_PAREN@[8; 9) "(" 8 L_PAREN@8..9 "("
9 R_PAREN@[9; 10) ")" 9 R_PAREN@9..10 ")"
10 WHITESPACE@[10; 11) " " 10 WHITESPACE@10..11 " "
11 BLOCK_EXPR@[11; 461) 11 BLOCK_EXPR@11..461
12 BLOCK@[11; 461) 12 BLOCK@11..461
13 L_CURLY@[11; 12) "{" 13 L_CURLY@11..12 "{"
14 WHITESPACE@[12; 17) "\n " 14 WHITESPACE@12..17 "\n "
15 ATTR@[17; 57) 15 ATTR@17..57
16 POUND@[17; 18) "#" 16 POUND@17..18 "#"
17 BANG@[18; 19) "!" 17 BANG@18..19 "!"
18 L_BRACK@[19; 20) "[" 18 L_BRACK@19..20 "["
19 PATH@[20; 23) 19 PATH@20..23
20 PATH_SEGMENT@[20; 23) 20 PATH_SEGMENT@20..23
21 NAME_REF@[20; 23) 21 NAME_REF@20..23
22 IDENT@[20; 23) "doc" 22 IDENT@20..23 "doc"
23 TOKEN_TREE@[23; 56) 23 TOKEN_TREE@23..56
24 L_PAREN@[23; 24) "(" 24 L_PAREN@23..24 "("
25 STRING@[24; 55) "\"Inner attributes all ..." 25 STRING@24..55 "\"Inner attributes all ..."
26 R_PAREN@[55; 56) ")" 26 R_PAREN@55..56 ")"
27 R_BRACK@[56; 57) "]" 27 R_BRACK@56..57 "]"
28 WHITESPACE@[57; 62) "\n " 28 WHITESPACE@57..62 "\n "
29 COMMENT@[62; 97) "//! As are ModuleDoc ..." 29 COMMENT@62..97 "//! As are ModuleDoc ..."
30 WHITESPACE@[97; 102) "\n " 30 WHITESPACE@97..102 "\n "
31 EXPR_STMT@[102; 295) 31 EXPR_STMT@102..295
32 BLOCK_EXPR@[102; 294) 32 BLOCK_EXPR@102..294
33 BLOCK@[102; 294) 33 BLOCK@102..294
34 L_CURLY@[102; 103) "{" 34 L_CURLY@102..103 "{"
35 WHITESPACE@[103; 112) "\n " 35 WHITESPACE@103..112 "\n "
36 ATTR@[112; 180) 36 ATTR@112..180
37 POUND@[112; 113) "#" 37 POUND@112..113 "#"
38 BANG@[113; 114) "!" 38 BANG@113..114 "!"
39 L_BRACK@[114; 115) "[" 39 L_BRACK@114..115 "["
40 PATH@[115; 118) 40 PATH@115..118
41 PATH_SEGMENT@[115; 118) 41 PATH_SEGMENT@115..118
42 NAME_REF@[115; 118) 42 NAME_REF@115..118
43 IDENT@[115; 118) "doc" 43 IDENT@115..118 "doc"
44 TOKEN_TREE@[118; 179) 44 TOKEN_TREE@118..179
45 L_PAREN@[118; 119) "(" 45 L_PAREN@118..119 "("
46 STRING@[119; 178) "\"Inner attributes are ..." 46 STRING@119..178 "\"Inner attributes are ..."
47 R_PAREN@[178; 179) ")" 47 R_PAREN@178..179 ")"
48 R_BRACK@[179; 180) "]" 48 R_BRACK@179..180 "]"
49 WHITESPACE@[180; 189) "\n " 49 WHITESPACE@180..189 "\n "
50 ATTR@[189; 244) 50 ATTR@189..244
51 POUND@[189; 190) "#" 51 POUND@189..190 "#"
52 BANG@[190; 191) "!" 52 BANG@190..191 "!"
53 L_BRACK@[191; 192) "[" 53 L_BRACK@191..192 "["
54 PATH@[192; 195) 54 PATH@192..195
55 PATH_SEGMENT@[192; 195) 55 PATH_SEGMENT@192..195
56 NAME_REF@[192; 195) 56 NAME_REF@192..195
57 IDENT@[192; 195) "doc" 57 IDENT@192..195 "doc"
58 TOKEN_TREE@[195; 243) 58 TOKEN_TREE@195..243
59 L_PAREN@[195; 196) "(" 59 L_PAREN@195..196 "("
60 STRING@[196; 242) "\"Being validated is n ..." 60 STRING@196..242 "\"Being validated is n ..."
61 R_PAREN@[242; 243) ")" 61 R_PAREN@242..243 ")"
62 R_BRACK@[243; 244) "]" 62 R_BRACK@243..244 "]"
63 WHITESPACE@[244; 253) "\n " 63 WHITESPACE@244..253 "\n "
64 COMMENT@[253; 288) "//! As are ModuleDoc ..." 64 COMMENT@253..288 "//! As are ModuleDoc ..."
65 WHITESPACE@[288; 293) "\n " 65 WHITESPACE@288..293 "\n "
66 R_CURLY@[293; 294) "}" 66 R_CURLY@293..294 "}"
67 SEMICOLON@[294; 295) ";" 67 SEMICOLON@294..295 ";"
68 WHITESPACE@[295; 300) "\n " 68 WHITESPACE@295..300 "\n "
69 BLOCK_EXPR@[300; 459) 69 BLOCK_EXPR@300..459
70 BLOCK@[300; 459) 70 BLOCK@300..459
71 L_CURLY@[300; 301) "{" 71 L_CURLY@300..301 "{"
72 WHITESPACE@[301; 310) "\n " 72 WHITESPACE@301..310 "\n "
73 ATTR@[310; 409) 73 ATTR@310..409
74 POUND@[310; 311) "#" 74 POUND@310..311 "#"
75 BANG@[311; 312) "!" 75 BANG@311..312 "!"
76 L_BRACK@[312; 313) "[" 76 L_BRACK@312..313 "["
77 PATH@[313; 316) 77 PATH@313..316
78 PATH_SEGMENT@[313; 316) 78 PATH_SEGMENT@313..316
79 NAME_REF@[313; 316) 79 NAME_REF@313..316
80 IDENT@[313; 316) "doc" 80 IDENT@313..316 "doc"
81 TOKEN_TREE@[316; 408) 81 TOKEN_TREE@316..408
82 L_PAREN@[316; 317) "(" 82 L_PAREN@316..317 "("
83 STRING@[317; 407) "\"Inner attributes are ..." 83 STRING@317..407 "\"Inner attributes are ..."
84 R_PAREN@[407; 408) ")" 84 R_PAREN@407..408 ")"
85 R_BRACK@[408; 409) "]" 85 R_BRACK@408..409 "]"
86 WHITESPACE@[409; 418) "\n " 86 WHITESPACE@409..418 "\n "
87 COMMENT@[418; 453) "//! As are ModuleDoc ..." 87 COMMENT@418..453 "//! As are ModuleDoc ..."
88 WHITESPACE@[453; 458) "\n " 88 WHITESPACE@453..458 "\n "
89 R_CURLY@[458; 459) "}" 89 R_CURLY@458..459 "}"
90 WHITESPACE@[459; 460) "\n" 90 WHITESPACE@459..460 "\n"
91 R_CURLY@[460; 461) "}" 91 R_CURLY@460..461 "}"
92 WHITESPACE@[461; 463) "\n\n" 92 WHITESPACE@461..463 "\n\n"
93 COMMENT@[463; 523) "// https://github.com ..." 93 COMMENT@463..523 "// https://github.com ..."
94 WHITESPACE@[523; 524) "\n" 94 WHITESPACE@523..524 "\n"
95 IMPL_DEF@[524; 685) 95 IMPL_DEF@524..685
96 IMPL_KW@[524; 528) "impl" 96 IMPL_KW@524..528 "impl"
97 WHITESPACE@[528; 529) " " 97 WHITESPACE@528..529 " "
98 PATH_TYPE@[529; 537) 98 PATH_TYPE@529..537
99 PATH@[529; 537) 99 PATH@529..537
100 PATH_SEGMENT@[529; 537) 100 PATH_SEGMENT@529..537
101 NAME_REF@[529; 537) 101 NAME_REF@529..537
102 IDENT@[529; 537) "Whatever" 102 IDENT@529..537 "Whatever"
103 WHITESPACE@[537; 538) " " 103 WHITESPACE@537..538 " "
104 ITEM_LIST@[538; 685) 104 ITEM_LIST@538..685
105 L_CURLY@[538; 539) "{" 105 L_CURLY@538..539 "{"
106 WHITESPACE@[539; 544) "\n " 106 WHITESPACE@539..544 "\n "
107 FN_DEF@[544; 683) 107 FN_DEF@544..683
108 FN_KW@[544; 546) "fn" 108 FN_KW@544..546 "fn"
109 WHITESPACE@[546; 547) " " 109 WHITESPACE@546..547 " "
110 NAME@[547; 558) 110 NAME@547..558
111 IDENT@[547; 558) "salsa_event" 111 IDENT@547..558 "salsa_event"
112 PARAM_LIST@[558; 601) 112 PARAM_LIST@558..601
113 L_PAREN@[558; 559) "(" 113 L_PAREN@558..559 "("
114 SELF_PARAM@[559; 564) 114 SELF_PARAM@559..564
115 AMP@[559; 560) "&" 115 AMP@559..560 "&"
116 SELF_KW@[560; 564) "self" 116 SELF_KW@560..564 "self"
117 COMMA@[564; 565) "," 117 COMMA@564..565 ","
118 WHITESPACE@[565; 566) " " 118 WHITESPACE@565..566 " "
119 PARAM@[566; 600) 119 PARAM@566..600
120 BIND_PAT@[566; 574) 120 BIND_PAT@566..574
121 NAME@[566; 574) 121 NAME@566..574
122 IDENT@[566; 574) "event_fn" 122 IDENT@566..574 "event_fn"
123 COLON@[574; 575) ":" 123 COLON@574..575 ":"
124 WHITESPACE@[575; 576) " " 124 WHITESPACE@575..576 " "
125 IMPL_TRAIT_TYPE@[576; 600) 125 IMPL_TRAIT_TYPE@576..600
126 IMPL_KW@[576; 580) "impl" 126 IMPL_KW@576..580 "impl"
127 WHITESPACE@[580; 581) " " 127 WHITESPACE@580..581 " "
128 TYPE_BOUND_LIST@[581; 600) 128 TYPE_BOUND_LIST@581..600
129 TYPE_BOUND@[581; 600) 129 TYPE_BOUND@581..600
130 PATH_TYPE@[581; 600) 130 PATH_TYPE@581..600
131 PATH@[581; 600) 131 PATH@581..600
132 PATH_SEGMENT@[581; 600) 132 PATH_SEGMENT@581..600
133 NAME_REF@[581; 583) 133 NAME_REF@581..583
134 IDENT@[581; 583) "Fn" 134 IDENT@581..583 "Fn"
135 PARAM_LIST@[583; 585) 135 PARAM_LIST@583..585
136 L_PAREN@[583; 584) "(" 136 L_PAREN@583..584 "("
137 R_PAREN@[584; 585) ")" 137 R_PAREN@584..585 ")"
138 WHITESPACE@[585; 586) " " 138 WHITESPACE@585..586 " "
139 RET_TYPE@[586; 600) 139 RET_TYPE@586..600
140 THIN_ARROW@[586; 588) "->" 140 THIN_ARROW@586..588 "->"
141 WHITESPACE@[588; 589) " " 141 WHITESPACE@588..589 " "
142 PATH_TYPE@[589; 600) 142 PATH_TYPE@589..600
143 PATH@[589; 600) 143 PATH@589..600
144 PATH_SEGMENT@[589; 600) 144 PATH_SEGMENT@589..600
145 NAME_REF@[589; 594) 145 NAME_REF@589..594
146 IDENT@[589; 594) "Event" 146 IDENT@589..594 "Event"
147 TYPE_ARG_LIST@[594; 600) 147 TYPE_ARG_LIST@594..600
148 L_ANGLE@[594; 595) "<" 148 L_ANGLE@594..595 "<"
149 TYPE_ARG@[595; 599) 149 TYPE_ARG@595..599
150 PATH_TYPE@[595; 599) 150 PATH_TYPE@595..599
151 PATH@[595; 599) 151 PATH@595..599
152 PATH_SEGMENT@[595; 599) 152 PATH_SEGMENT@595..599
153 NAME_REF@[595; 599) 153 NAME_REF@595..599
154 IDENT@[595; 599) "Self" 154 IDENT@595..599 "Self"
155 R_ANGLE@[599; 600) ">" 155 R_ANGLE@599..600 ">"
156 R_PAREN@[600; 601) ")" 156 R_PAREN@600..601 ")"
157 WHITESPACE@[601; 602) " " 157 WHITESPACE@601..602 " "
158 BLOCK_EXPR@[602; 683) 158 BLOCK_EXPR@602..683
159 BLOCK@[602; 683) 159 BLOCK@602..683
160 L_CURLY@[602; 603) "{" 160 L_CURLY@602..603 "{"
161 WHITESPACE@[603; 612) "\n " 161 WHITESPACE@603..612 "\n "
162 ATTR@[612; 639) 162 ATTR@612..639
163 POUND@[612; 613) "#" 163 POUND@612..613 "#"
164 BANG@[613; 614) "!" 164 BANG@613..614 "!"
165 L_BRACK@[614; 615) "[" 165 L_BRACK@614..615 "["
166 PATH@[615; 620) 166 PATH@615..620
167 PATH_SEGMENT@[615; 620) 167 PATH_SEGMENT@615..620
168 NAME_REF@[615; 620) 168 NAME_REF@615..620
169 IDENT@[615; 620) "allow" 169 IDENT@615..620 "allow"
170 TOKEN_TREE@[620; 638) 170 TOKEN_TREE@620..638
171 L_PAREN@[620; 621) "(" 171 L_PAREN@620..621 "("
172 IDENT@[621; 637) "unused_variables" 172 IDENT@621..637 "unused_variables"
173 R_PAREN@[637; 638) ")" 173 R_PAREN@637..638 ")"
174 R_BRACK@[638; 639) "]" 174 R_BRACK@638..639 "]"
175 WHITESPACE@[639; 640) " " 175 WHITESPACE@639..640 " "
176 COMMENT@[640; 677) "// this is `inner_at ..." 176 COMMENT@640..677 "// this is `inner_at ..."
177 WHITESPACE@[677; 682) "\n " 177 WHITESPACE@677..682 "\n "
178 R_CURLY@[682; 683) "}" 178 R_CURLY@682..683 "}"
179 WHITESPACE@[683; 684) "\n" 179 WHITESPACE@683..684 "\n"
180 R_CURLY@[684; 685) "}" 180 R_CURLY@684..685 "}"
181 WHITESPACE@[685; 686) "\n" 181 WHITESPACE@685..686 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.rast b/crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.rast
index 92c8df2d6..37594769a 100644
--- a/crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0046_extern_inner_attributes.rast
@@ -1,28 +1,28 @@
1SOURCE_FILE@[0; 87) 1SOURCE_FILE@0..87
2 EXTERN_BLOCK@[0; 86) 2 EXTERN_BLOCK@0..86
3 ABI@[0; 10) 3 ABI@0..10
4 EXTERN_KW@[0; 6) "extern" 4 EXTERN_KW@0..6 "extern"
5 WHITESPACE@[6; 7) " " 5 WHITESPACE@6..7 " "
6 STRING@[7; 10) "\"C\"" 6 STRING@7..10 "\"C\""
7 WHITESPACE@[10; 11) " " 7 WHITESPACE@10..11 " "
8 EXTERN_ITEM_LIST@[11; 86) 8 EXTERN_ITEM_LIST@11..86
9 L_CURLY@[11; 12) "{" 9 L_CURLY@11..12 "{"
10 WHITESPACE@[12; 17) "\n " 10 WHITESPACE@12..17 "\n "
11 COMMENT@[17; 42) "//! This is a doc com ..." 11 COMMENT@17..42 "//! This is a doc com ..."
12 WHITESPACE@[42; 47) "\n " 12 WHITESPACE@42..47 "\n "
13 ATTR@[47; 84) 13 ATTR@47..84
14 POUND@[47; 48) "#" 14 POUND@47..48 "#"
15 BANG@[48; 49) "!" 15 BANG@48..49 "!"
16 L_BRACK@[49; 50) "[" 16 L_BRACK@49..50 "["
17 PATH@[50; 53) 17 PATH@50..53
18 PATH_SEGMENT@[50; 53) 18 PATH_SEGMENT@50..53
19 NAME_REF@[50; 53) 19 NAME_REF@50..53
20 IDENT@[50; 53) "doc" 20 IDENT@50..53 "doc"
21 TOKEN_TREE@[53; 83) 21 TOKEN_TREE@53..83
22 L_PAREN@[53; 54) "(" 22 L_PAREN@53..54 "("
23 STRING@[54; 82) "\"This is also a doc c ..." 23 STRING@54..82 "\"This is also a doc c ..."
24 R_PAREN@[82; 83) ")" 24 R_PAREN@82..83 ")"
25 R_BRACK@[83; 84) "]" 25 R_BRACK@83..84 "]"
26 WHITESPACE@[84; 85) "\n" 26 WHITESPACE@84..85 "\n"
27 R_CURLY@[85; 86) "}" 27 R_CURLY@85..86 "}"
28 WHITESPACE@[86; 87) "\n" 28 WHITESPACE@86..87 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rast b/crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rast
index de703328a..1cf12d670 100644
--- a/crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.rast
@@ -1,323 +1,323 @@
1SOURCE_FILE@[0; 395) 1SOURCE_FILE@0..395
2 COMMENT@[0; 60) "// https://github.com ..." 2 COMMENT@0..60 "// https://github.com ..."
3 WHITESPACE@[60; 62) "\n\n" 3 WHITESPACE@60..62 "\n\n"
4 FN_DEF@[62; 341) 4 FN_DEF@62..341
5 FN_KW@[62; 64) "fn" 5 FN_KW@62..64 "fn"
6 WHITESPACE@[64; 65) " " 6 WHITESPACE@64..65 " "
7 NAME@[65; 69) 7 NAME@65..69
8 IDENT@[65; 69) "main" 8 IDENT@65..69 "main"
9 PARAM_LIST@[69; 71) 9 PARAM_LIST@69..71
10 L_PAREN@[69; 70) "(" 10 L_PAREN@69..70 "("
11 R_PAREN@[70; 71) ")" 11 R_PAREN@70..71 ")"
12 WHITESPACE@[71; 72) " " 12 WHITESPACE@71..72 " "
13 BLOCK_EXPR@[72; 341) 13 BLOCK_EXPR@72..341
14 BLOCK@[72; 341) 14 BLOCK@72..341
15 L_CURLY@[72; 73) "{" 15 L_CURLY@72..73 "{"
16 WHITESPACE@[73; 78) "\n " 16 WHITESPACE@73..78 "\n "
17 EXPR_STMT@[78; 141) 17 EXPR_STMT@78..141
18 MATCH_EXPR@[78; 141) 18 MATCH_EXPR@78..141
19 MATCH_KW@[78; 83) "match" 19 MATCH_KW@78..83 "match"
20 WHITESPACE@[83; 84) " " 20 WHITESPACE@83..84 " "
21 CALL_EXPR@[84; 92) 21 CALL_EXPR@84..92
22 PATH_EXPR@[84; 88) 22 PATH_EXPR@84..88
23 PATH@[84; 88) 23 PATH@84..88
24 PATH_SEGMENT@[84; 88) 24 PATH_SEGMENT@84..88
25 NAME_REF@[84; 88) 25 NAME_REF@84..88
26 IDENT@[84; 88) "Some" 26 IDENT@84..88 "Some"
27 ARG_LIST@[88; 92) 27 ARG_LIST@88..92
28 L_PAREN@[88; 89) "(" 28 L_PAREN@88..89 "("
29 PREFIX_EXPR@[89; 91) 29 PREFIX_EXPR@89..91
30 MINUS@[89; 90) "-" 30 MINUS@89..90 "-"
31 LITERAL@[90; 91) 31 LITERAL@90..91
32 INT_NUMBER@[90; 91) "1" 32 INT_NUMBER@90..91 "1"
33 R_PAREN@[91; 92) ")" 33 R_PAREN@91..92 ")"
34 WHITESPACE@[92; 93) " " 34 WHITESPACE@92..93 " "
35 MATCH_ARM_LIST@[93; 141) 35 MATCH_ARM_LIST@93..141
36 L_CURLY@[93; 94) "{" 36 L_CURLY@93..94 "{"
37 WHITESPACE@[94; 103) "\n " 37 WHITESPACE@94..103 "\n "
38 MATCH_ARM@[103; 117) 38 MATCH_ARM@103..117
39 TUPLE_STRUCT_PAT@[103; 111) 39 TUPLE_STRUCT_PAT@103..111
40 PATH@[103; 107) 40 PATH@103..107
41 PATH_SEGMENT@[103; 107) 41 PATH_SEGMENT@103..107
42 NAME_REF@[103; 107) 42 NAME_REF@103..107
43 IDENT@[103; 107) "Some" 43 IDENT@103..107 "Some"
44 L_PAREN@[107; 108) "(" 44 L_PAREN@107..108 "("
45 LITERAL_PAT@[108; 110) 45 LITERAL_PAT@108..110
46 MINUS@[108; 109) "-" 46 MINUS@108..109 "-"
47 LITERAL@[109; 110) 47 LITERAL@109..110
48 INT_NUMBER@[109; 110) "1" 48 INT_NUMBER@109..110 "1"
49 R_PAREN@[110; 111) ")" 49 R_PAREN@110..111 ")"
50 WHITESPACE@[111; 112) " " 50 WHITESPACE@111..112 " "
51 FAT_ARROW@[112; 114) "=>" 51 FAT_ARROW@112..114 "=>"
52 WHITESPACE@[114; 115) " " 52 WHITESPACE@114..115 " "
53 TUPLE_EXPR@[115; 117) 53 TUPLE_EXPR@115..117
54 L_PAREN@[115; 116) "(" 54 L_PAREN@115..116 "("
55 R_PAREN@[116; 117) ")" 55 R_PAREN@116..117 ")"
56 COMMA@[117; 118) "," 56 COMMA@117..118 ","
57 WHITESPACE@[118; 127) "\n " 57 WHITESPACE@118..127 "\n "
58 MATCH_ARM@[127; 134) 58 MATCH_ARM@127..134
59 PLACEHOLDER_PAT@[127; 128) 59 PLACEHOLDER_PAT@127..128
60 UNDERSCORE@[127; 128) "_" 60 UNDERSCORE@127..128 "_"
61 WHITESPACE@[128; 129) " " 61 WHITESPACE@128..129 " "
62 FAT_ARROW@[129; 131) "=>" 62 FAT_ARROW@129..131 "=>"
63 WHITESPACE@[131; 132) " " 63 WHITESPACE@131..132 " "
64 TUPLE_EXPR@[132; 134) 64 TUPLE_EXPR@132..134
65 L_PAREN@[132; 133) "(" 65 L_PAREN@132..133 "("
66 R_PAREN@[133; 134) ")" 66 R_PAREN@133..134 ")"
67 COMMA@[134; 135) "," 67 COMMA@134..135 ","
68 WHITESPACE@[135; 140) "\n " 68 WHITESPACE@135..140 "\n "
69 R_CURLY@[140; 141) "}" 69 R_CURLY@140..141 "}"
70 WHITESPACE@[141; 147) "\n\n " 70 WHITESPACE@141..147 "\n\n "
71 EXPR_STMT@[147; 222) 71 EXPR_STMT@147..222
72 MATCH_EXPR@[147; 222) 72 MATCH_EXPR@147..222
73 MATCH_KW@[147; 152) "match" 73 MATCH_KW@147..152 "match"
74 WHITESPACE@[152; 153) " " 74 WHITESPACE@152..153 " "
75 CALL_EXPR@[153; 167) 75 CALL_EXPR@153..167
76 PATH_EXPR@[153; 157) 76 PATH_EXPR@153..157
77 PATH@[153; 157) 77 PATH@153..157
78 PATH_SEGMENT@[153; 157) 78 PATH_SEGMENT@153..157
79 NAME_REF@[153; 157) 79 NAME_REF@153..157
80 IDENT@[153; 157) "Some" 80 IDENT@153..157 "Some"
81 ARG_LIST@[157; 167) 81 ARG_LIST@157..167
82 L_PAREN@[157; 158) "(" 82 L_PAREN@157..158 "("
83 TUPLE_EXPR@[158; 166) 83 TUPLE_EXPR@158..166
84 L_PAREN@[158; 159) "(" 84 L_PAREN@158..159 "("
85 PREFIX_EXPR@[159; 161) 85 PREFIX_EXPR@159..161
86 MINUS@[159; 160) "-" 86 MINUS@159..160 "-"
87 LITERAL@[160; 161) 87 LITERAL@160..161
88 INT_NUMBER@[160; 161) "1" 88 INT_NUMBER@160..161 "1"
89 COMMA@[161; 162) "," 89 COMMA@161..162 ","
90 WHITESPACE@[162; 163) " " 90 WHITESPACE@162..163 " "
91 PREFIX_EXPR@[163; 165) 91 PREFIX_EXPR@163..165
92 MINUS@[163; 164) "-" 92 MINUS@163..164 "-"
93 LITERAL@[164; 165) 93 LITERAL@164..165
94 INT_NUMBER@[164; 165) "1" 94 INT_NUMBER@164..165 "1"
95 R_PAREN@[165; 166) ")" 95 R_PAREN@165..166 ")"
96 R_PAREN@[166; 167) ")" 96 R_PAREN@166..167 ")"
97 WHITESPACE@[167; 168) " " 97 WHITESPACE@167..168 " "
98 MATCH_ARM_LIST@[168; 222) 98 MATCH_ARM_LIST@168..222
99 L_CURLY@[168; 169) "{" 99 L_CURLY@168..169 "{"
100 WHITESPACE@[169; 178) "\n " 100 WHITESPACE@169..178 "\n "
101 MATCH_ARM@[178; 198) 101 MATCH_ARM@178..198
102 TUPLE_STRUCT_PAT@[178; 192) 102 TUPLE_STRUCT_PAT@178..192
103 PATH@[178; 182) 103 PATH@178..182
104 PATH_SEGMENT@[178; 182) 104 PATH_SEGMENT@178..182
105 NAME_REF@[178; 182) 105 NAME_REF@178..182
106 IDENT@[178; 182) "Some" 106 IDENT@178..182 "Some"
107 L_PAREN@[182; 183) "(" 107 L_PAREN@182..183 "("
108 TUPLE_PAT@[183; 191) 108 TUPLE_PAT@183..191
109 L_PAREN@[183; 184) "(" 109 L_PAREN@183..184 "("
110 LITERAL_PAT@[184; 186) 110 LITERAL_PAT@184..186
111 MINUS@[184; 185) "-" 111 MINUS@184..185 "-"
112 LITERAL@[185; 186) 112 LITERAL@185..186
113 INT_NUMBER@[185; 186) "1" 113 INT_NUMBER@185..186 "1"
114 COMMA@[186; 187) "," 114 COMMA@186..187 ","
115 WHITESPACE@[187; 188) " " 115 WHITESPACE@187..188 " "
116 LITERAL_PAT@[188; 190) 116 LITERAL_PAT@188..190
117 MINUS@[188; 189) "-" 117 MINUS@188..189 "-"
118 LITERAL@[189; 190) 118 LITERAL@189..190
119 INT_NUMBER@[189; 190) "1" 119 INT_NUMBER@189..190 "1"
120 R_PAREN@[190; 191) ")" 120 R_PAREN@190..191 ")"
121 R_PAREN@[191; 192) ")" 121 R_PAREN@191..192 ")"
122 WHITESPACE@[192; 193) " " 122 WHITESPACE@192..193 " "
123 FAT_ARROW@[193; 195) "=>" 123 FAT_ARROW@193..195 "=>"
124 WHITESPACE@[195; 196) " " 124 WHITESPACE@195..196 " "
125 TUPLE_EXPR@[196; 198) 125 TUPLE_EXPR@196..198
126 L_PAREN@[196; 197) "(" 126 L_PAREN@196..197 "("
127 R_PAREN@[197; 198) ")" 127 R_PAREN@197..198 ")"
128 COMMA@[198; 199) "," 128 COMMA@198..199 ","
129 WHITESPACE@[199; 208) "\n " 129 WHITESPACE@199..208 "\n "
130 MATCH_ARM@[208; 215) 130 MATCH_ARM@208..215
131 PLACEHOLDER_PAT@[208; 209) 131 PLACEHOLDER_PAT@208..209
132 UNDERSCORE@[208; 209) "_" 132 UNDERSCORE@208..209 "_"
133 WHITESPACE@[209; 210) " " 133 WHITESPACE@209..210 " "
134 FAT_ARROW@[210; 212) "=>" 134 FAT_ARROW@210..212 "=>"
135 WHITESPACE@[212; 213) " " 135 WHITESPACE@212..213 " "
136 TUPLE_EXPR@[213; 215) 136 TUPLE_EXPR@213..215
137 L_PAREN@[213; 214) "(" 137 L_PAREN@213..214 "("
138 R_PAREN@[214; 215) ")" 138 R_PAREN@214..215 ")"
139 COMMA@[215; 216) "," 139 COMMA@215..216 ","
140 WHITESPACE@[216; 221) "\n " 140 WHITESPACE@216..221 "\n "
141 R_CURLY@[221; 222) "}" 141 R_CURLY@221..222 "}"
142 WHITESPACE@[222; 228) "\n\n " 142 WHITESPACE@222..228 "\n\n "
143 EXPR_STMT@[228; 299) 143 EXPR_STMT@228..299
144 MATCH_EXPR@[228; 299) 144 MATCH_EXPR@228..299
145 MATCH_KW@[228; 233) "match" 145 MATCH_KW@228..233 "match"
146 WHITESPACE@[233; 234) " " 146 WHITESPACE@233..234 " "
147 CALL_EXPR@[234; 246) 147 CALL_EXPR@234..246
148 PATH_EXPR@[234; 238) 148 PATH_EXPR@234..238
149 PATH@[234; 238) 149 PATH@234..238
150 PATH@[234; 235) 150 PATH@234..235
151 PATH_SEGMENT@[234; 235) 151 PATH_SEGMENT@234..235
152 NAME_REF@[234; 235) 152 NAME_REF@234..235
153 IDENT@[234; 235) "A" 153 IDENT@234..235 "A"
154 COLON2@[235; 237) "::" 154 COLON2@235..237 "::"
155 PATH_SEGMENT@[237; 238) 155 PATH_SEGMENT@237..238
156 NAME_REF@[237; 238) 156 NAME_REF@237..238
157 IDENT@[237; 238) "B" 157 IDENT@237..238 "B"
158 ARG_LIST@[238; 246) 158 ARG_LIST@238..246
159 L_PAREN@[238; 239) "(" 159 L_PAREN@238..239 "("
160 PREFIX_EXPR@[239; 241) 160 PREFIX_EXPR@239..241
161 MINUS@[239; 240) "-" 161 MINUS@239..240 "-"
162 LITERAL@[240; 241) 162 LITERAL@240..241
163 INT_NUMBER@[240; 241) "1" 163 INT_NUMBER@240..241 "1"
164 COMMA@[241; 242) "," 164 COMMA@241..242 ","
165 WHITESPACE@[242; 243) " " 165 WHITESPACE@242..243 " "
166 PREFIX_EXPR@[243; 245) 166 PREFIX_EXPR@243..245
167 MINUS@[243; 244) "-" 167 MINUS@243..244 "-"
168 LITERAL@[244; 245) 168 LITERAL@244..245
169 INT_NUMBER@[244; 245) "1" 169 INT_NUMBER@244..245 "1"
170 R_PAREN@[245; 246) ")" 170 R_PAREN@245..246 ")"
171 WHITESPACE@[246; 247) " " 171 WHITESPACE@246..247 " "
172 MATCH_ARM_LIST@[247; 299) 172 MATCH_ARM_LIST@247..299
173 L_CURLY@[247; 248) "{" 173 L_CURLY@247..248 "{"
174 WHITESPACE@[248; 257) "\n " 174 WHITESPACE@248..257 "\n "
175 MATCH_ARM@[257; 275) 175 MATCH_ARM@257..275
176 TUPLE_STRUCT_PAT@[257; 269) 176 TUPLE_STRUCT_PAT@257..269
177 PATH@[257; 261) 177 PATH@257..261
178 PATH@[257; 258) 178 PATH@257..258
179 PATH_SEGMENT@[257; 258) 179 PATH_SEGMENT@257..258
180 NAME_REF@[257; 258) 180 NAME_REF@257..258
181 IDENT@[257; 258) "A" 181 IDENT@257..258 "A"
182 COLON2@[258; 260) "::" 182 COLON2@258..260 "::"
183 PATH_SEGMENT@[260; 261) 183 PATH_SEGMENT@260..261
184 NAME_REF@[260; 261) 184 NAME_REF@260..261
185 IDENT@[260; 261) "B" 185 IDENT@260..261 "B"
186 L_PAREN@[261; 262) "(" 186 L_PAREN@261..262 "("
187 LITERAL_PAT@[262; 264) 187 LITERAL_PAT@262..264
188 MINUS@[262; 263) "-" 188 MINUS@262..263 "-"
189 LITERAL@[263; 264) 189 LITERAL@263..264
190 INT_NUMBER@[263; 264) "1" 190 INT_NUMBER@263..264 "1"
191 COMMA@[264; 265) "," 191 COMMA@264..265 ","
192 WHITESPACE@[265; 266) " " 192 WHITESPACE@265..266 " "
193 LITERAL_PAT@[266; 268) 193 LITERAL_PAT@266..268
194 MINUS@[266; 267) "-" 194 MINUS@266..267 "-"
195 LITERAL@[267; 268) 195 LITERAL@267..268
196 INT_NUMBER@[267; 268) "1" 196 INT_NUMBER@267..268 "1"
197 R_PAREN@[268; 269) ")" 197 R_PAREN@268..269 ")"
198 WHITESPACE@[269; 270) " " 198 WHITESPACE@269..270 " "
199 FAT_ARROW@[270; 272) "=>" 199 FAT_ARROW@270..272 "=>"
200 WHITESPACE@[272; 273) " " 200 WHITESPACE@272..273 " "
201 TUPLE_EXPR@[273; 275) 201 TUPLE_EXPR@273..275
202 L_PAREN@[273; 274) "(" 202 L_PAREN@273..274 "("
203 R_PAREN@[274; 275) ")" 203 R_PAREN@274..275 ")"
204 COMMA@[275; 276) "," 204 COMMA@275..276 ","
205 WHITESPACE@[276; 285) "\n " 205 WHITESPACE@276..285 "\n "
206 MATCH_ARM@[285; 292) 206 MATCH_ARM@285..292
207 PLACEHOLDER_PAT@[285; 286) 207 PLACEHOLDER_PAT@285..286
208 UNDERSCORE@[285; 286) "_" 208 UNDERSCORE@285..286 "_"
209 WHITESPACE@[286; 287) " " 209 WHITESPACE@286..287 " "
210 FAT_ARROW@[287; 289) "=>" 210 FAT_ARROW@287..289 "=>"
211 WHITESPACE@[289; 290) " " 211 WHITESPACE@289..290 " "
212 TUPLE_EXPR@[290; 292) 212 TUPLE_EXPR@290..292
213 L_PAREN@[290; 291) "(" 213 L_PAREN@290..291 "("
214 R_PAREN@[291; 292) ")" 214 R_PAREN@291..292 ")"
215 COMMA@[292; 293) "," 215 COMMA@292..293 ","
216 WHITESPACE@[293; 298) "\n " 216 WHITESPACE@293..298 "\n "
217 R_CURLY@[298; 299) "}" 217 R_CURLY@298..299 "}"
218 WHITESPACE@[299; 305) "\n\n " 218 WHITESPACE@299..305 "\n\n "
219 IF_EXPR@[305; 339) 219 IF_EXPR@305..339
220 IF_KW@[305; 307) "if" 220 IF_KW@305..307 "if"
221 WHITESPACE@[307; 308) " " 221 WHITESPACE@307..308 " "
222 CONDITION@[308; 331) 222 CONDITION@308..331
223 LET_KW@[308; 311) "let" 223 LET_KW@308..311 "let"
224 WHITESPACE@[311; 312) " " 224 WHITESPACE@311..312 " "
225 TUPLE_STRUCT_PAT@[312; 320) 225 TUPLE_STRUCT_PAT@312..320
226 PATH@[312; 316) 226 PATH@312..316
227 PATH_SEGMENT@[312; 316) 227 PATH_SEGMENT@312..316
228 NAME_REF@[312; 316) 228 NAME_REF@312..316
229 IDENT@[312; 316) "Some" 229 IDENT@312..316 "Some"
230 L_PAREN@[316; 317) "(" 230 L_PAREN@316..317 "("
231 LITERAL_PAT@[317; 319) 231 LITERAL_PAT@317..319
232 MINUS@[317; 318) "-" 232 MINUS@317..318 "-"
233 LITERAL@[318; 319) 233 LITERAL@318..319
234 INT_NUMBER@[318; 319) "1" 234 INT_NUMBER@318..319 "1"
235 R_PAREN@[319; 320) ")" 235 R_PAREN@319..320 ")"
236 WHITESPACE@[320; 321) " " 236 WHITESPACE@320..321 " "
237 EQ@[321; 322) "=" 237 EQ@321..322 "="
238 WHITESPACE@[322; 323) " " 238 WHITESPACE@322..323 " "
239 CALL_EXPR@[323; 331) 239 CALL_EXPR@323..331
240 PATH_EXPR@[323; 327) 240 PATH_EXPR@323..327
241 PATH@[323; 327) 241 PATH@323..327
242 PATH_SEGMENT@[323; 327) 242 PATH_SEGMENT@323..327
243 NAME_REF@[323; 327) 243 NAME_REF@323..327
244 IDENT@[323; 327) "Some" 244 IDENT@323..327 "Some"
245 ARG_LIST@[327; 331) 245 ARG_LIST@327..331
246 L_PAREN@[327; 328) "(" 246 L_PAREN@327..328 "("
247 PREFIX_EXPR@[328; 330) 247 PREFIX_EXPR@328..330
248 MINUS@[328; 329) "-" 248 MINUS@328..329 "-"
249 LITERAL@[329; 330) 249 LITERAL@329..330
250 INT_NUMBER@[329; 330) "1" 250 INT_NUMBER@329..330 "1"
251 R_PAREN@[330; 331) ")" 251 R_PAREN@330..331 ")"
252 WHITESPACE@[331; 332) " " 252 WHITESPACE@331..332 " "
253 BLOCK_EXPR@[332; 339) 253 BLOCK_EXPR@332..339
254 BLOCK@[332; 339) 254 BLOCK@332..339
255 L_CURLY@[332; 333) "{" 255 L_CURLY@332..333 "{"
256 WHITESPACE@[333; 338) "\n " 256 WHITESPACE@333..338 "\n "
257 R_CURLY@[338; 339) "}" 257 R_CURLY@338..339 "}"
258 WHITESPACE@[339; 340) "\n" 258 WHITESPACE@339..340 "\n"
259 R_CURLY@[340; 341) "}" 259 R_CURLY@340..341 "}"
260 WHITESPACE@[341; 343) "\n\n" 260 WHITESPACE@341..343 "\n\n"
261 ENUM_DEF@[343; 367) 261 ENUM_DEF@343..367
262 ENUM_KW@[343; 347) "enum" 262 ENUM_KW@343..347 "enum"
263 WHITESPACE@[347; 348) " " 263 WHITESPACE@347..348 " "
264 NAME@[348; 349) 264 NAME@348..349
265 IDENT@[348; 349) "A" 265 IDENT@348..349 "A"
266 WHITESPACE@[349; 350) " " 266 WHITESPACE@349..350 " "
267 ENUM_VARIANT_LIST@[350; 367) 267 ENUM_VARIANT_LIST@350..367
268 L_CURLY@[350; 351) "{" 268 L_CURLY@350..351 "{"
269 WHITESPACE@[351; 356) "\n " 269 WHITESPACE@351..356 "\n "
270 ENUM_VARIANT@[356; 365) 270 ENUM_VARIANT@356..365
271 NAME@[356; 357) 271 NAME@356..357
272 IDENT@[356; 357) "B" 272 IDENT@356..357 "B"
273 TUPLE_FIELD_DEF_LIST@[357; 365) 273 TUPLE_FIELD_DEF_LIST@357..365
274 L_PAREN@[357; 358) "(" 274 L_PAREN@357..358 "("
275 TUPLE_FIELD_DEF@[358; 360) 275 TUPLE_FIELD_DEF@358..360
276 PATH_TYPE@[358; 360) 276 PATH_TYPE@358..360
277 PATH@[358; 360) 277 PATH@358..360
278 PATH_SEGMENT@[358; 360) 278 PATH_SEGMENT@358..360
279 NAME_REF@[358; 360) 279 NAME_REF@358..360
280 IDENT@[358; 360) "i8" 280 IDENT@358..360 "i8"
281 COMMA@[360; 361) "," 281 COMMA@360..361 ","
282 WHITESPACE@[361; 362) " " 282 WHITESPACE@361..362 " "
283 TUPLE_FIELD_DEF@[362; 364) 283 TUPLE_FIELD_DEF@362..364
284 PATH_TYPE@[362; 364) 284 PATH_TYPE@362..364
285 PATH@[362; 364) 285 PATH@362..364
286 PATH_SEGMENT@[362; 364) 286 PATH_SEGMENT@362..364
287 NAME_REF@[362; 364) 287 NAME_REF@362..364
288 IDENT@[362; 364) "i8" 288 IDENT@362..364 "i8"
289 R_PAREN@[364; 365) ")" 289 R_PAREN@364..365 ")"
290 WHITESPACE@[365; 366) "\n" 290 WHITESPACE@365..366 "\n"
291 R_CURLY@[366; 367) "}" 291 R_CURLY@366..367 "}"
292 WHITESPACE@[367; 369) "\n\n" 292 WHITESPACE@367..369 "\n\n"
293 FN_DEF@[369; 394) 293 FN_DEF@369..394
294 FN_KW@[369; 371) "fn" 294 FN_KW@369..371 "fn"
295 WHITESPACE@[371; 372) " " 295 WHITESPACE@371..372 " "
296 NAME@[372; 375) 296 NAME@372..375
297 IDENT@[372; 375) "foo" 297 IDENT@372..375 "foo"
298 PARAM_LIST@[375; 391) 298 PARAM_LIST@375..391
299 L_PAREN@[375; 376) "(" 299 L_PAREN@375..376 "("
300 PARAM@[376; 390) 300 PARAM@376..390
301 RANGE_PAT@[376; 386) 301 RANGE_PAT@376..386
302 LITERAL_PAT@[376; 380) 302 LITERAL_PAT@376..380
303 MINUS@[376; 377) "-" 303 MINUS@376..377 "-"
304 LITERAL@[377; 380) 304 LITERAL@377..380
305 INT_NUMBER@[377; 380) "128" 305 INT_NUMBER@377..380 "128"
306 DOT2EQ@[380; 383) "..=" 306 DOT2EQ@380..383 "..="
307 LITERAL_PAT@[383; 386) 307 LITERAL_PAT@383..386
308 LITERAL@[383; 386) 308 LITERAL@383..386
309 INT_NUMBER@[383; 386) "127" 309 INT_NUMBER@383..386 "127"
310 COLON@[386; 387) ":" 310 COLON@386..387 ":"
311 WHITESPACE@[387; 388) " " 311 WHITESPACE@387..388 " "
312 PATH_TYPE@[388; 390) 312 PATH_TYPE@388..390
313 PATH@[388; 390) 313 PATH@388..390
314 PATH_SEGMENT@[388; 390) 314 PATH_SEGMENT@388..390
315 NAME_REF@[388; 390) 315 NAME_REF@388..390
316 IDENT@[388; 390) "i8" 316 IDENT@388..390 "i8"
317 R_PAREN@[390; 391) ")" 317 R_PAREN@390..391 ")"
318 WHITESPACE@[391; 392) " " 318 WHITESPACE@391..392 " "
319 BLOCK_EXPR@[392; 394) 319 BLOCK_EXPR@392..394
320 BLOCK@[392; 394) 320 BLOCK@392..394
321 L_CURLY@[392; 393) "{" 321 L_CURLY@392..393 "{"
322 R_CURLY@[393; 394) "}" 322 R_CURLY@393..394 "}"
323 WHITESPACE@[394; 395) "\n" 323 WHITESPACE@394..395 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.rast b/crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.rast
index 849d8a445..9c2701bf7 100644
--- a/crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.rast
@@ -1,201 +1,201 @@
1SOURCE_FILE@[0; 257) 1SOURCE_FILE@0..257
2 COMMENT@[0; 58) "// https://github.com ..." 2 COMMENT@0..58 "// https://github.com ..."
3 WHITESPACE@[58; 60) "\n\n" 3 WHITESPACE@58..60 "\n\n"
4 FN_DEF@[60; 256) 4 FN_DEF@60..256
5 FN_KW@[60; 62) "fn" 5 FN_KW@60..62 "fn"
6 WHITESPACE@[62; 63) " " 6 WHITESPACE@62..63 " "
7 NAME@[63; 82) 7 NAME@63..82
8 IDENT@[63; 82) "compound_assignment" 8 IDENT@63..82 "compound_assignment"
9 PARAM_LIST@[82; 84) 9 PARAM_LIST@82..84
10 L_PAREN@[82; 83) "(" 10 L_PAREN@82..83 "("
11 R_PAREN@[83; 84) ")" 11 R_PAREN@83..84 ")"
12 WHITESPACE@[84; 85) " " 12 WHITESPACE@84..85 " "
13 BLOCK_EXPR@[85; 256) 13 BLOCK_EXPR@85..256
14 BLOCK@[85; 256) 14 BLOCK@85..256
15 L_CURLY@[85; 86) "{" 15 L_CURLY@85..86 "{"
16 WHITESPACE@[86; 91) "\n " 16 WHITESPACE@86..91 "\n "
17 LET_STMT@[91; 105) 17 LET_STMT@91..105
18 LET_KW@[91; 94) "let" 18 LET_KW@91..94 "let"
19 WHITESPACE@[94; 95) " " 19 WHITESPACE@94..95 " "
20 BIND_PAT@[95; 100) 20 BIND_PAT@95..100
21 MUT_KW@[95; 98) "mut" 21 MUT_KW@95..98 "mut"
22 WHITESPACE@[98; 99) " " 22 WHITESPACE@98..99 " "
23 NAME@[99; 100) 23 NAME@99..100
24 IDENT@[99; 100) "a" 24 IDENT@99..100 "a"
25 WHITESPACE@[100; 101) " " 25 WHITESPACE@100..101 " "
26 EQ@[101; 102) "=" 26 EQ@101..102 "="
27 WHITESPACE@[102; 103) " " 27 WHITESPACE@102..103 " "
28 LITERAL@[103; 104) 28 LITERAL@103..104
29 INT_NUMBER@[103; 104) "0" 29 INT_NUMBER@103..104 "0"
30 SEMICOLON@[104; 105) ";" 30 SEMICOLON@104..105 ";"
31 WHITESPACE@[105; 110) "\n " 31 WHITESPACE@105..110 "\n "
32 EXPR_STMT@[110; 117) 32 EXPR_STMT@110..117
33 BIN_EXPR@[110; 116) 33 BIN_EXPR@110..116
34 PATH_EXPR@[110; 111) 34 PATH_EXPR@110..111
35 PATH@[110; 111) 35 PATH@110..111
36 PATH_SEGMENT@[110; 111) 36 PATH_SEGMENT@110..111
37 NAME_REF@[110; 111) 37 NAME_REF@110..111
38 IDENT@[110; 111) "a" 38 IDENT@110..111 "a"
39 WHITESPACE@[111; 112) " " 39 WHITESPACE@111..112 " "
40 PLUSEQ@[112; 114) "+=" 40 PLUSEQ@112..114 "+="
41 WHITESPACE@[114; 115) " " 41 WHITESPACE@114..115 " "
42 LITERAL@[115; 116) 42 LITERAL@115..116
43 INT_NUMBER@[115; 116) "1" 43 INT_NUMBER@115..116 "1"
44 SEMICOLON@[116; 117) ";" 44 SEMICOLON@116..117 ";"
45 WHITESPACE@[117; 122) "\n " 45 WHITESPACE@117..122 "\n "
46 EXPR_STMT@[122; 129) 46 EXPR_STMT@122..129
47 BIN_EXPR@[122; 128) 47 BIN_EXPR@122..128
48 PATH_EXPR@[122; 123) 48 PATH_EXPR@122..123
49 PATH@[122; 123) 49 PATH@122..123
50 PATH_SEGMENT@[122; 123) 50 PATH_SEGMENT@122..123
51 NAME_REF@[122; 123) 51 NAME_REF@122..123
52 IDENT@[122; 123) "a" 52 IDENT@122..123 "a"
53 WHITESPACE@[123; 124) " " 53 WHITESPACE@123..124 " "
54 MINUSEQ@[124; 126) "-=" 54 MINUSEQ@124..126 "-="
55 WHITESPACE@[126; 127) " " 55 WHITESPACE@126..127 " "
56 LITERAL@[127; 128) 56 LITERAL@127..128
57 INT_NUMBER@[127; 128) "2" 57 INT_NUMBER@127..128 "2"
58 SEMICOLON@[128; 129) ";" 58 SEMICOLON@128..129 ";"
59 WHITESPACE@[129; 134) "\n " 59 WHITESPACE@129..134 "\n "
60 EXPR_STMT@[134; 141) 60 EXPR_STMT@134..141
61 BIN_EXPR@[134; 140) 61 BIN_EXPR@134..140
62 PATH_EXPR@[134; 135) 62 PATH_EXPR@134..135
63 PATH@[134; 135) 63 PATH@134..135
64 PATH_SEGMENT@[134; 135) 64 PATH_SEGMENT@134..135
65 NAME_REF@[134; 135) 65 NAME_REF@134..135
66 IDENT@[134; 135) "a" 66 IDENT@134..135 "a"
67 WHITESPACE@[135; 136) " " 67 WHITESPACE@135..136 " "
68 STAREQ@[136; 138) "*=" 68 STAREQ@136..138 "*="
69 WHITESPACE@[138; 139) " " 69 WHITESPACE@138..139 " "
70 LITERAL@[139; 140) 70 LITERAL@139..140
71 INT_NUMBER@[139; 140) "3" 71 INT_NUMBER@139..140 "3"
72 SEMICOLON@[140; 141) ";" 72 SEMICOLON@140..141 ";"
73 WHITESPACE@[141; 146) "\n " 73 WHITESPACE@141..146 "\n "
74 EXPR_STMT@[146; 153) 74 EXPR_STMT@146..153
75 BIN_EXPR@[146; 152) 75 BIN_EXPR@146..152
76 PATH_EXPR@[146; 147) 76 PATH_EXPR@146..147
77 PATH@[146; 147) 77 PATH@146..147
78 PATH_SEGMENT@[146; 147) 78 PATH_SEGMENT@146..147
79 NAME_REF@[146; 147) 79 NAME_REF@146..147
80 IDENT@[146; 147) "a" 80 IDENT@146..147 "a"
81 WHITESPACE@[147; 148) " " 81 WHITESPACE@147..148 " "
82 PERCENTEQ@[148; 150) "%=" 82 PERCENTEQ@148..150 "%="
83 WHITESPACE@[150; 151) " " 83 WHITESPACE@150..151 " "
84 LITERAL@[151; 152) 84 LITERAL@151..152
85 INT_NUMBER@[151; 152) "4" 85 INT_NUMBER@151..152 "4"
86 SEMICOLON@[152; 153) ";" 86 SEMICOLON@152..153 ";"
87 WHITESPACE@[153; 158) "\n " 87 WHITESPACE@153..158 "\n "
88 EXPR_STMT@[158; 165) 88 EXPR_STMT@158..165
89 BIN_EXPR@[158; 164) 89 BIN_EXPR@158..164
90 PATH_EXPR@[158; 159) 90 PATH_EXPR@158..159
91 PATH@[158; 159) 91 PATH@158..159
92 PATH_SEGMENT@[158; 159) 92 PATH_SEGMENT@158..159
93 NAME_REF@[158; 159) 93 NAME_REF@158..159
94 IDENT@[158; 159) "a" 94 IDENT@158..159 "a"
95 WHITESPACE@[159; 160) " " 95 WHITESPACE@159..160 " "
96 SLASHEQ@[160; 162) "/=" 96 SLASHEQ@160..162 "/="
97 WHITESPACE@[162; 163) " " 97 WHITESPACE@162..163 " "
98 LITERAL@[163; 164) 98 LITERAL@163..164
99 INT_NUMBER@[163; 164) "5" 99 INT_NUMBER@163..164 "5"
100 SEMICOLON@[164; 165) ";" 100 SEMICOLON@164..165 ";"
101 WHITESPACE@[165; 170) "\n " 101 WHITESPACE@165..170 "\n "
102 EXPR_STMT@[170; 177) 102 EXPR_STMT@170..177
103 BIN_EXPR@[170; 176) 103 BIN_EXPR@170..176
104 PATH_EXPR@[170; 171) 104 PATH_EXPR@170..171
105 PATH@[170; 171) 105 PATH@170..171
106 PATH_SEGMENT@[170; 171) 106 PATH_SEGMENT@170..171
107 NAME_REF@[170; 171) 107 NAME_REF@170..171
108 IDENT@[170; 171) "a" 108 IDENT@170..171 "a"
109 WHITESPACE@[171; 172) " " 109 WHITESPACE@171..172 " "
110 PIPEEQ@[172; 174) "|=" 110 PIPEEQ@172..174 "|="
111 WHITESPACE@[174; 175) " " 111 WHITESPACE@174..175 " "
112 LITERAL@[175; 176) 112 LITERAL@175..176
113 INT_NUMBER@[175; 176) "6" 113 INT_NUMBER@175..176 "6"
114 SEMICOLON@[176; 177) ";" 114 SEMICOLON@176..177 ";"
115 WHITESPACE@[177; 182) "\n " 115 WHITESPACE@177..182 "\n "
116 EXPR_STMT@[182; 189) 116 EXPR_STMT@182..189
117 BIN_EXPR@[182; 188) 117 BIN_EXPR@182..188
118 PATH_EXPR@[182; 183) 118 PATH_EXPR@182..183
119 PATH@[182; 183) 119 PATH@182..183
120 PATH_SEGMENT@[182; 183) 120 PATH_SEGMENT@182..183
121 NAME_REF@[182; 183) 121 NAME_REF@182..183
122 IDENT@[182; 183) "a" 122 IDENT@182..183 "a"
123 WHITESPACE@[183; 184) " " 123 WHITESPACE@183..184 " "
124 AMPEQ@[184; 186) "&=" 124 AMPEQ@184..186 "&="
125 WHITESPACE@[186; 187) " " 125 WHITESPACE@186..187 " "
126 LITERAL@[187; 188) 126 LITERAL@187..188
127 INT_NUMBER@[187; 188) "7" 127 INT_NUMBER@187..188 "7"
128 SEMICOLON@[188; 189) ";" 128 SEMICOLON@188..189 ";"
129 WHITESPACE@[189; 194) "\n " 129 WHITESPACE@189..194 "\n "
130 EXPR_STMT@[194; 201) 130 EXPR_STMT@194..201
131 BIN_EXPR@[194; 200) 131 BIN_EXPR@194..200
132 PATH_EXPR@[194; 195) 132 PATH_EXPR@194..195
133 PATH@[194; 195) 133 PATH@194..195
134 PATH_SEGMENT@[194; 195) 134 PATH_SEGMENT@194..195
135 NAME_REF@[194; 195) 135 NAME_REF@194..195
136 IDENT@[194; 195) "a" 136 IDENT@194..195 "a"
137 WHITESPACE@[195; 196) " " 137 WHITESPACE@195..196 " "
138 CARETEQ@[196; 198) "^=" 138 CARETEQ@196..198 "^="
139 WHITESPACE@[198; 199) " " 139 WHITESPACE@198..199 " "
140 LITERAL@[199; 200) 140 LITERAL@199..200
141 INT_NUMBER@[199; 200) "8" 141 INT_NUMBER@199..200 "8"
142 SEMICOLON@[200; 201) ";" 142 SEMICOLON@200..201 ";"
143 WHITESPACE@[201; 206) "\n " 143 WHITESPACE@201..206 "\n "
144 EXPR_STMT@[206; 213) 144 EXPR_STMT@206..213
145 BIN_EXPR@[206; 212) 145 BIN_EXPR@206..212
146 PATH_EXPR@[206; 207) 146 PATH_EXPR@206..207
147 PATH@[206; 207) 147 PATH@206..207
148 PATH_SEGMENT@[206; 207) 148 PATH_SEGMENT@206..207
149 NAME_REF@[206; 207) 149 NAME_REF@206..207
150 IDENT@[206; 207) "a" 150 IDENT@206..207 "a"
151 WHITESPACE@[207; 208) " " 151 WHITESPACE@207..208 " "
152 LTEQ@[208; 210) "<=" 152 LTEQ@208..210 "<="
153 WHITESPACE@[210; 211) " " 153 WHITESPACE@210..211 " "
154 LITERAL@[211; 212) 154 LITERAL@211..212
155 INT_NUMBER@[211; 212) "9" 155 INT_NUMBER@211..212 "9"
156 SEMICOLON@[212; 213) ";" 156 SEMICOLON@212..213 ";"
157 WHITESPACE@[213; 218) "\n " 157 WHITESPACE@213..218 "\n "
158 EXPR_STMT@[218; 226) 158 EXPR_STMT@218..226
159 BIN_EXPR@[218; 225) 159 BIN_EXPR@218..225
160 PATH_EXPR@[218; 219) 160 PATH_EXPR@218..219
161 PATH@[218; 219) 161 PATH@218..219
162 PATH_SEGMENT@[218; 219) 162 PATH_SEGMENT@218..219
163 NAME_REF@[218; 219) 163 NAME_REF@218..219
164 IDENT@[218; 219) "a" 164 IDENT@218..219 "a"
165 WHITESPACE@[219; 220) " " 165 WHITESPACE@219..220 " "
166 GTEQ@[220; 222) ">=" 166 GTEQ@220..222 ">="
167 WHITESPACE@[222; 223) " " 167 WHITESPACE@222..223 " "
168 LITERAL@[223; 225) 168 LITERAL@223..225
169 INT_NUMBER@[223; 225) "10" 169 INT_NUMBER@223..225 "10"
170 SEMICOLON@[225; 226) ";" 170 SEMICOLON@225..226 ";"
171 WHITESPACE@[226; 231) "\n " 171 WHITESPACE@226..231 "\n "
172 EXPR_STMT@[231; 240) 172 EXPR_STMT@231..240
173 BIN_EXPR@[231; 239) 173 BIN_EXPR@231..239
174 PATH_EXPR@[231; 232) 174 PATH_EXPR@231..232
175 PATH@[231; 232) 175 PATH@231..232
176 PATH_SEGMENT@[231; 232) 176 PATH_SEGMENT@231..232
177 NAME_REF@[231; 232) 177 NAME_REF@231..232
178 IDENT@[231; 232) "a" 178 IDENT@231..232 "a"
179 WHITESPACE@[232; 233) " " 179 WHITESPACE@232..233 " "
180 SHREQ@[233; 236) ">>=" 180 SHREQ@233..236 ">>="
181 WHITESPACE@[236; 237) " " 181 WHITESPACE@236..237 " "
182 LITERAL@[237; 239) 182 LITERAL@237..239
183 INT_NUMBER@[237; 239) "11" 183 INT_NUMBER@237..239 "11"
184 SEMICOLON@[239; 240) ";" 184 SEMICOLON@239..240 ";"
185 WHITESPACE@[240; 245) "\n " 185 WHITESPACE@240..245 "\n "
186 EXPR_STMT@[245; 254) 186 EXPR_STMT@245..254
187 BIN_EXPR@[245; 253) 187 BIN_EXPR@245..253
188 PATH_EXPR@[245; 246) 188 PATH_EXPR@245..246
189 PATH@[245; 246) 189 PATH@245..246
190 PATH_SEGMENT@[245; 246) 190 PATH_SEGMENT@245..246
191 NAME_REF@[245; 246) 191 NAME_REF@245..246
192 IDENT@[245; 246) "a" 192 IDENT@245..246 "a"
193 WHITESPACE@[246; 247) " " 193 WHITESPACE@246..247 " "
194 SHLEQ@[247; 250) "<<=" 194 SHLEQ@247..250 "<<="
195 WHITESPACE@[250; 251) " " 195 WHITESPACE@250..251 " "
196 LITERAL@[251; 253) 196 LITERAL@251..253
197 INT_NUMBER@[251; 253) "12" 197 INT_NUMBER@251..253 "12"
198 SEMICOLON@[253; 254) ";" 198 SEMICOLON@253..254 ";"
199 WHITESPACE@[254; 255) "\n" 199 WHITESPACE@254..255 "\n"
200 R_CURLY@[255; 256) "}" 200 R_CURLY@255..256 "}"
201 WHITESPACE@[256; 257) "\n" 201 WHITESPACE@256..257 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0049_async_block.rast b/crates/ra_syntax/test_data/parser/ok/0049_async_block.rast
index 0d32f0115..750527bb9 100644
--- a/crates/ra_syntax/test_data/parser/ok/0049_async_block.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0049_async_block.rast
@@ -1,36 +1,36 @@
1SOURCE_FILE@[0; 47) 1SOURCE_FILE@0..47
2 FN_DEF@[0; 45) 2 FN_DEF@0..45
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 45) 11 BLOCK_EXPR@9..45
12 BLOCK@[9; 45) 12 BLOCK@9..45
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 24) 15 EXPR_STMT@15..24
16 BLOCK_EXPR@[15; 23) 16 BLOCK_EXPR@15..23
17 ASYNC_KW@[15; 20) "async" 17 ASYNC_KW@15..20 "async"
18 WHITESPACE@[20; 21) " " 18 WHITESPACE@20..21 " "
19 BLOCK@[21; 23) 19 BLOCK@21..23
20 L_CURLY@[21; 22) "{" 20 L_CURLY@21..22 "{"
21 R_CURLY@[22; 23) "}" 21 R_CURLY@22..23 "}"
22 SEMICOLON@[23; 24) ";" 22 SEMICOLON@23..24 ";"
23 WHITESPACE@[24; 29) "\n " 23 WHITESPACE@24..29 "\n "
24 EXPR_STMT@[29; 43) 24 EXPR_STMT@29..43
25 BLOCK_EXPR@[29; 42) 25 BLOCK_EXPR@29..42
26 ASYNC_KW@[29; 34) "async" 26 ASYNC_KW@29..34 "async"
27 WHITESPACE@[34; 35) " " 27 WHITESPACE@34..35 " "
28 MOVE_KW@[35; 39) "move" 28 MOVE_KW@35..39 "move"
29 WHITESPACE@[39; 40) " " 29 WHITESPACE@39..40 " "
30 BLOCK@[40; 42) 30 BLOCK@40..42
31 L_CURLY@[40; 41) "{" 31 L_CURLY@40..41 "{"
32 R_CURLY@[41; 42) "}" 32 R_CURLY@41..42 "}"
33 SEMICOLON@[42; 43) ";" 33 SEMICOLON@42..43 ";"
34 WHITESPACE@[43; 44) "\n" 34 WHITESPACE@43..44 "\n"
35 R_CURLY@[44; 45) "}" 35 R_CURLY@44..45 "}"
36 WHITESPACE@[45; 47) "\n\n" 36 WHITESPACE@45..47 "\n\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.rast b/crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.rast
index 17591d99f..b5577e933 100644
--- a/crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.rast
@@ -1,92 +1,92 @@
1SOURCE_FILE@[0; 95) 1SOURCE_FILE@0..95
2 FN_DEF@[0; 52) 2 FN_DEF@0..52
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 49) 7 PARAM_LIST@6..49
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 PARAM@[7; 48) 9 PARAM@7..48
10 BIND_PAT@[7; 8) 10 BIND_PAT@7..8
11 NAME@[7; 8) 11 NAME@7..8
12 IDENT@[7; 8) "x" 12 IDENT@7..8 "x"
13 COLON@[8; 9) ":" 13 COLON@8..9 ":"
14 WHITESPACE@[9; 10) " " 14 WHITESPACE@9..10 " "
15 IMPL_TRAIT_TYPE@[10; 48) 15 IMPL_TRAIT_TYPE@10..48
16 IMPL_KW@[10; 14) "impl" 16 IMPL_KW@10..14 "impl"
17 WHITESPACE@[14; 15) " " 17 WHITESPACE@14..15 " "
18 TYPE_BOUND_LIST@[15; 48) 18 TYPE_BOUND_LIST@15..48
19 TYPE_BOUND@[15; 48) 19 TYPE_BOUND@15..48
20 PATH_TYPE@[15; 48) 20 PATH_TYPE@15..48
21 PATH@[15; 48) 21 PATH@15..48
22 PATH@[15; 26) 22 PATH@15..26
23 PATH@[15; 18) 23 PATH@15..18
24 PATH_SEGMENT@[15; 18) 24 PATH_SEGMENT@15..18
25 NAME_REF@[15; 18) 25 NAME_REF@15..18
26 IDENT@[15; 18) "std" 26 IDENT@15..18 "std"
27 COLON2@[18; 20) "::" 27 COLON2@18..20 "::"
28 PATH_SEGMENT@[20; 26) 28 PATH_SEGMENT@20..26
29 NAME_REF@[20; 26) 29 NAME_REF@20..26
30 IDENT@[20; 26) "future" 30 IDENT@20..26 "future"
31 COLON2@[26; 28) "::" 31 COLON2@26..28 "::"
32 PATH_SEGMENT@[28; 48) 32 PATH_SEGMENT@28..48
33 NAME_REF@[28; 34) 33 NAME_REF@28..34
34 IDENT@[28; 34) "Future" 34 IDENT@28..34 "Future"
35 TYPE_ARG_LIST@[34; 48) 35 TYPE_ARG_LIST@34..48
36 L_ANGLE@[34; 35) "<" 36 L_ANGLE@34..35 "<"
37 ASSOC_TYPE_ARG@[35; 47) 37 ASSOC_TYPE_ARG@35..47
38 NAME_REF@[35; 41) 38 NAME_REF@35..41
39 IDENT@[35; 41) "Output" 39 IDENT@35..41 "Output"
40 WHITESPACE@[41; 42) " " 40 WHITESPACE@41..42 " "
41 EQ@[42; 43) "=" 41 EQ@42..43 "="
42 WHITESPACE@[43; 44) " " 42 WHITESPACE@43..44 " "
43 PATH_TYPE@[44; 47) 43 PATH_TYPE@44..47
44 PATH@[44; 47) 44 PATH@44..47
45 PATH_SEGMENT@[44; 47) 45 PATH_SEGMENT@44..47
46 NAME_REF@[44; 47) 46 NAME_REF@44..47
47 IDENT@[44; 47) "i32" 47 IDENT@44..47 "i32"
48 R_ANGLE@[47; 48) ">" 48 R_ANGLE@47..48 ">"
49 R_PAREN@[48; 49) ")" 49 R_PAREN@48..49 ")"
50 WHITESPACE@[49; 50) " " 50 WHITESPACE@49..50 " "
51 BLOCK_EXPR@[50; 52) 51 BLOCK_EXPR@50..52
52 BLOCK@[50; 52) 52 BLOCK@50..52
53 L_CURLY@[50; 51) "{" 53 L_CURLY@50..51 "{"
54 R_CURLY@[51; 52) "}" 54 R_CURLY@51..52 "}"
55 WHITESPACE@[52; 54) "\n\n" 55 WHITESPACE@52..54 "\n\n"
56 FN_DEF@[54; 94) 56 FN_DEF@54..94
57 FN_KW@[54; 56) "fn" 57 FN_KW@54..56 "fn"
58 WHITESPACE@[56; 57) " " 58 WHITESPACE@56..57 " "
59 NAME@[57; 61) 59 NAME@57..61
60 IDENT@[57; 61) "main" 60 IDENT@57..61 "main"
61 PARAM_LIST@[61; 63) 61 PARAM_LIST@61..63
62 L_PAREN@[61; 62) "(" 62 L_PAREN@61..62 "("
63 R_PAREN@[62; 63) ")" 63 R_PAREN@62..63 ")"
64 WHITESPACE@[63; 64) " " 64 WHITESPACE@63..64 " "
65 BLOCK_EXPR@[64; 94) 65 BLOCK_EXPR@64..94
66 BLOCK@[64; 94) 66 BLOCK@64..94
67 L_CURLY@[64; 65) "{" 67 L_CURLY@64..65 "{"
68 WHITESPACE@[65; 70) "\n " 68 WHITESPACE@65..70 "\n "
69 CALL_EXPR@[70; 92) 69 CALL_EXPR@70..92
70 PATH_EXPR@[70; 73) 70 PATH_EXPR@70..73
71 PATH@[70; 73) 71 PATH@70..73
72 PATH_SEGMENT@[70; 73) 72 PATH_SEGMENT@70..73
73 NAME_REF@[70; 73) 73 NAME_REF@70..73
74 IDENT@[70; 73) "foo" 74 IDENT@70..73 "foo"
75 ARG_LIST@[73; 92) 75 ARG_LIST@73..92
76 L_PAREN@[73; 74) "(" 76 L_PAREN@73..74 "("
77 BLOCK_EXPR@[74; 91) 77 BLOCK_EXPR@74..91
78 ASYNC_KW@[74; 79) "async" 78 ASYNC_KW@74..79 "async"
79 WHITESPACE@[79; 80) " " 79 WHITESPACE@79..80 " "
80 MOVE_KW@[80; 84) "move" 80 MOVE_KW@80..84 "move"
81 WHITESPACE@[84; 85) " " 81 WHITESPACE@84..85 " "
82 BLOCK@[85; 91) 82 BLOCK@85..91
83 L_CURLY@[85; 86) "{" 83 L_CURLY@85..86 "{"
84 WHITESPACE@[86; 87) " " 84 WHITESPACE@86..87 " "
85 LITERAL@[87; 89) 85 LITERAL@87..89
86 INT_NUMBER@[87; 89) "12" 86 INT_NUMBER@87..89 "12"
87 WHITESPACE@[89; 90) " " 87 WHITESPACE@89..90 " "
88 R_CURLY@[90; 91) "}" 88 R_CURLY@90..91 "}"
89 R_PAREN@[91; 92) ")" 89 R_PAREN@91..92 ")"
90 WHITESPACE@[92; 93) "\n" 90 WHITESPACE@92..93 "\n"
91 R_CURLY@[93; 94) "}" 91 R_CURLY@93..94 "}"
92 WHITESPACE@[94; 95) "\n" 92 WHITESPACE@94..95 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.rast b/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.rast
index 8fd28427c..6aacc2141 100644
--- a/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.rast
@@ -1,519 +1,519 @@
1SOURCE_FILE@[0; 519) 1SOURCE_FILE@0..519
2 FN_DEF@[0; 37) 2 FN_DEF@0..37
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 5) 5 NAME@3..5
6 IDENT@[3; 5) "g1" 6 IDENT@3..5 "g1"
7 PARAM_LIST@[5; 34) 7 PARAM_LIST@5..34
8 L_PAREN@[5; 6) "(" 8 L_PAREN@5..6 "("
9 ATTR@[6; 14) 9 ATTR@6..14
10 POUND@[6; 7) "#" 10 POUND@6..7 "#"
11 L_BRACK@[7; 8) "[" 11 L_BRACK@7..8 "["
12 PATH@[8; 13) 12 PATH@8..13
13 PATH_SEGMENT@[8; 13) 13 PATH_SEGMENT@8..13
14 NAME_REF@[8; 13) 14 NAME_REF@8..13
15 IDENT@[8; 13) "attr1" 15 IDENT@8..13 "attr1"
16 R_BRACK@[13; 14) "]" 16 R_BRACK@13..14 "]"
17 WHITESPACE@[14; 15) " " 17 WHITESPACE@14..15 " "
18 ATTR@[15; 23) 18 ATTR@15..23
19 POUND@[15; 16) "#" 19 POUND@15..16 "#"
20 L_BRACK@[16; 17) "[" 20 L_BRACK@16..17 "["
21 PATH@[17; 22) 21 PATH@17..22
22 PATH_SEGMENT@[17; 22) 22 PATH_SEGMENT@17..22
23 NAME_REF@[17; 22) 23 NAME_REF@17..22
24 IDENT@[17; 22) "attr2" 24 IDENT@17..22 "attr2"
25 R_BRACK@[22; 23) "]" 25 R_BRACK@22..23 "]"
26 WHITESPACE@[23; 24) " " 26 WHITESPACE@23..24 " "
27 PARAM@[24; 33) 27 PARAM@24..33
28 BIND_PAT@[24; 27) 28 BIND_PAT@24..27
29 NAME@[24; 27) 29 NAME@24..27
30 IDENT@[24; 27) "pat" 30 IDENT@24..27 "pat"
31 COLON@[27; 28) ":" 31 COLON@27..28 ":"
32 WHITESPACE@[28; 29) " " 32 WHITESPACE@28..29 " "
33 PATH_TYPE@[29; 33) 33 PATH_TYPE@29..33
34 PATH@[29; 33) 34 PATH@29..33
35 PATH_SEGMENT@[29; 33) 35 PATH_SEGMENT@29..33
36 NAME_REF@[29; 33) 36 NAME_REF@29..33
37 IDENT@[29; 33) "Type" 37 IDENT@29..33 "Type"
38 R_PAREN@[33; 34) ")" 38 R_PAREN@33..34 ")"
39 WHITESPACE@[34; 35) " " 39 WHITESPACE@34..35 " "
40 BLOCK_EXPR@[35; 37) 40 BLOCK_EXPR@35..37
41 BLOCK@[35; 37) 41 BLOCK@35..37
42 L_CURLY@[35; 36) "{" 42 L_CURLY@35..36 "{"
43 R_CURLY@[36; 37) "}" 43 R_CURLY@36..37 "}"
44 WHITESPACE@[37; 38) "\n" 44 WHITESPACE@37..38 "\n"
45 FN_DEF@[38; 62) 45 FN_DEF@38..62
46 FN_KW@[38; 40) "fn" 46 FN_KW@38..40 "fn"
47 WHITESPACE@[40; 41) " " 47 WHITESPACE@40..41 " "
48 NAME@[41; 43) 48 NAME@41..43
49 IDENT@[41; 43) "g2" 49 IDENT@41..43 "g2"
50 PARAM_LIST@[43; 59) 50 PARAM_LIST@43..59
51 L_PAREN@[43; 44) "(" 51 L_PAREN@43..44 "("
52 ATTR@[44; 52) 52 ATTR@44..52
53 POUND@[44; 45) "#" 53 POUND@44..45 "#"
54 L_BRACK@[45; 46) "[" 54 L_BRACK@45..46 "["
55 PATH@[46; 51) 55 PATH@46..51
56 PATH_SEGMENT@[46; 51) 56 PATH_SEGMENT@46..51
57 NAME_REF@[46; 51) 57 NAME_REF@46..51
58 IDENT@[46; 51) "attr1" 58 IDENT@46..51 "attr1"
59 R_BRACK@[51; 52) "]" 59 R_BRACK@51..52 "]"
60 WHITESPACE@[52; 53) " " 60 WHITESPACE@52..53 " "
61 PARAM@[53; 58) 61 PARAM@53..58
62 BIND_PAT@[53; 54) 62 BIND_PAT@53..54
63 NAME@[53; 54) 63 NAME@53..54
64 IDENT@[53; 54) "x" 64 IDENT@53..54 "x"
65 COLON@[54; 55) ":" 65 COLON@54..55 ":"
66 WHITESPACE@[55; 56) " " 66 WHITESPACE@55..56 " "
67 PATH_TYPE@[56; 58) 67 PATH_TYPE@56..58
68 PATH@[56; 58) 68 PATH@56..58
69 PATH_SEGMENT@[56; 58) 69 PATH_SEGMENT@56..58
70 NAME_REF@[56; 58) 70 NAME_REF@56..58
71 IDENT@[56; 58) "u8" 71 IDENT@56..58 "u8"
72 R_PAREN@[58; 59) ")" 72 R_PAREN@58..59 ")"
73 WHITESPACE@[59; 60) " " 73 WHITESPACE@59..60 " "
74 BLOCK_EXPR@[60; 62) 74 BLOCK_EXPR@60..62
75 BLOCK@[60; 62) 75 BLOCK@60..62
76 L_CURLY@[60; 61) "{" 76 L_CURLY@60..61 "{"
77 R_CURLY@[61; 62) "}" 77 R_CURLY@61..62 "}"
78 WHITESPACE@[62; 64) "\n\n" 78 WHITESPACE@62..64 "\n\n"
79 EXTERN_BLOCK@[64; 128) 79 EXTERN_BLOCK@64..128
80 ABI@[64; 74) 80 ABI@64..74
81 EXTERN_KW@[64; 70) "extern" 81 EXTERN_KW@64..70 "extern"
82 WHITESPACE@[70; 71) " " 82 WHITESPACE@70..71 " "
83 STRING@[71; 74) "\"C\"" 83 STRING@71..74 "\"C\""
84 WHITESPACE@[74; 75) " " 84 WHITESPACE@74..75 " "
85 EXTERN_ITEM_LIST@[75; 128) 85 EXTERN_ITEM_LIST@75..128
86 L_CURLY@[75; 76) "{" 86 L_CURLY@75..76 "{"
87 WHITESPACE@[76; 77) " " 87 WHITESPACE@76..77 " "
88 FN_DEF@[77; 126) 88 FN_DEF@77..126
89 FN_KW@[77; 79) "fn" 89 FN_KW@77..79 "fn"
90 WHITESPACE@[79; 80) " " 90 WHITESPACE@79..80 " "
91 NAME@[80; 86) 91 NAME@80..86
92 IDENT@[80; 86) "printf" 92 IDENT@80..86 "printf"
93 PARAM_LIST@[86; 118) 93 PARAM_LIST@86..118
94 L_PAREN@[86; 87) "(" 94 L_PAREN@86..87 "("
95 PARAM@[87; 104) 95 PARAM@87..104
96 BIND_PAT@[87; 93) 96 BIND_PAT@87..93
97 NAME@[87; 93) 97 NAME@87..93
98 IDENT@[87; 93) "format" 98 IDENT@87..93 "format"
99 COLON@[93; 94) ":" 99 COLON@93..94 ":"
100 WHITESPACE@[94; 95) " " 100 WHITESPACE@94..95 " "
101 POINTER_TYPE@[95; 104) 101 POINTER_TYPE@95..104
102 STAR@[95; 96) "*" 102 STAR@95..96 "*"
103 CONST_KW@[96; 101) "const" 103 CONST_KW@96..101 "const"
104 WHITESPACE@[101; 102) " " 104 WHITESPACE@101..102 " "
105 PATH_TYPE@[102; 104) 105 PATH_TYPE@102..104
106 PATH@[102; 104) 106 PATH@102..104
107 PATH_SEGMENT@[102; 104) 107 PATH_SEGMENT@102..104
108 NAME_REF@[102; 104) 108 NAME_REF@102..104
109 IDENT@[102; 104) "i8" 109 IDENT@102..104 "i8"
110 COMMA@[104; 105) "," 110 COMMA@104..105 ","
111 WHITESPACE@[105; 106) " " 111 WHITESPACE@105..106 " "
112 ATTR@[106; 113) 112 ATTR@106..113
113 POUND@[106; 107) "#" 113 POUND@106..107 "#"
114 L_BRACK@[107; 108) "[" 114 L_BRACK@107..108 "["
115 PATH@[108; 112) 115 PATH@108..112
116 PATH_SEGMENT@[108; 112) 116 PATH_SEGMENT@108..112
117 NAME_REF@[108; 112) 117 NAME_REF@108..112
118 IDENT@[108; 112) "attr" 118 IDENT@108..112 "attr"
119 R_BRACK@[112; 113) "]" 119 R_BRACK@112..113 "]"
120 WHITESPACE@[113; 114) " " 120 WHITESPACE@113..114 " "
121 PARAM@[114; 117) 121 PARAM@114..117
122 DOT3@[114; 117) "..." 122 DOT3@114..117 "..."
123 R_PAREN@[117; 118) ")" 123 R_PAREN@117..118 ")"
124 WHITESPACE@[118; 119) " " 124 WHITESPACE@118..119 " "
125 RET_TYPE@[119; 125) 125 RET_TYPE@119..125
126 THIN_ARROW@[119; 121) "->" 126 THIN_ARROW@119..121 "->"
127 WHITESPACE@[121; 122) " " 127 WHITESPACE@121..122 " "
128 PATH_TYPE@[122; 125) 128 PATH_TYPE@122..125
129 PATH@[122; 125) 129 PATH@122..125
130 PATH_SEGMENT@[122; 125) 130 PATH_SEGMENT@122..125
131 NAME_REF@[122; 125) 131 NAME_REF@122..125
132 IDENT@[122; 125) "i32" 132 IDENT@122..125 "i32"
133 SEMICOLON@[125; 126) ";" 133 SEMICOLON@125..126 ";"
134 WHITESPACE@[126; 127) " " 134 WHITESPACE@126..127 " "
135 R_CURLY@[127; 128) "}" 135 R_CURLY@127..128 "}"
136 WHITESPACE@[128; 130) "\n\n" 136 WHITESPACE@128..130 "\n\n"
137 FN_DEF@[130; 172) 137 FN_DEF@130..172
138 FN_KW@[130; 132) "fn" 138 FN_KW@130..132 "fn"
139 WHITESPACE@[132; 133) " " 139 WHITESPACE@132..133 " "
140 NAME@[133; 136) 140 NAME@133..136
141 IDENT@[133; 136) "foo" 141 IDENT@133..136 "foo"
142 TYPE_PARAM_LIST@[136; 168) 142 TYPE_PARAM_LIST@136..168
143 L_ANGLE@[136; 137) "<" 143 L_ANGLE@136..137 "<"
144 TYPE_PARAM@[137; 167) 144 TYPE_PARAM@137..167
145 NAME@[137; 138) 145 NAME@137..138
146 IDENT@[137; 138) "F" 146 IDENT@137..138 "F"
147 COLON@[138; 139) ":" 147 COLON@138..139 ":"
148 WHITESPACE@[139; 140) " " 148 WHITESPACE@139..140 " "
149 TYPE_BOUND_LIST@[140; 167) 149 TYPE_BOUND_LIST@140..167
150 TYPE_BOUND@[140; 167) 150 TYPE_BOUND@140..167
151 PATH_TYPE@[140; 167) 151 PATH_TYPE@140..167
152 PATH@[140; 167) 152 PATH@140..167
153 PATH_SEGMENT@[140; 167) 153 PATH_SEGMENT@140..167
154 NAME_REF@[140; 145) 154 NAME_REF@140..145
155 IDENT@[140; 145) "FnMut" 155 IDENT@140..145 "FnMut"
156 PARAM_LIST@[145; 167) 156 PARAM_LIST@145..167
157 L_PAREN@[145; 146) "(" 157 L_PAREN@145..146 "("
158 ATTR@[146; 153) 158 ATTR@146..153
159 POUND@[146; 147) "#" 159 POUND@146..147 "#"
160 L_BRACK@[147; 148) "[" 160 L_BRACK@147..148 "["
161 PATH@[148; 152) 161 PATH@148..152
162 PATH_SEGMENT@[148; 152) 162 PATH_SEGMENT@148..152
163 NAME_REF@[148; 152) 163 NAME_REF@148..152
164 IDENT@[148; 152) "attr" 164 IDENT@148..152 "attr"
165 R_BRACK@[152; 153) "]" 165 R_BRACK@152..153 "]"
166 WHITESPACE@[153; 154) " " 166 WHITESPACE@153..154 " "
167 PARAM@[154; 166) 167 PARAM@154..166
168 REFERENCE_TYPE@[154; 166) 168 REFERENCE_TYPE@154..166
169 AMP@[154; 155) "&" 169 AMP@154..155 "&"
170 MUT_KW@[155; 158) "mut" 170 MUT_KW@155..158 "mut"
171 WHITESPACE@[158; 159) " " 171 WHITESPACE@158..159 " "
172 PATH_TYPE@[159; 166) 172 PATH_TYPE@159..166
173 PATH@[159; 166) 173 PATH@159..166
174 PATH_SEGMENT@[159; 166) 174 PATH_SEGMENT@159..166
175 NAME_REF@[159; 162) 175 NAME_REF@159..162
176 IDENT@[159; 162) "Foo" 176 IDENT@159..162 "Foo"
177 TYPE_ARG_LIST@[162; 166) 177 TYPE_ARG_LIST@162..166
178 L_ANGLE@[162; 163) "<" 178 L_ANGLE@162..163 "<"
179 LIFETIME_ARG@[163; 165) 179 LIFETIME_ARG@163..165
180 LIFETIME@[163; 165) "\'a" 180 LIFETIME@163..165 "\'a"
181 R_ANGLE@[165; 166) ">" 181 R_ANGLE@165..166 ">"
182 R_PAREN@[166; 167) ")" 182 R_PAREN@166..167 ")"
183 R_ANGLE@[167; 168) ">" 183 R_ANGLE@167..168 ">"
184 PARAM_LIST@[168; 170) 184 PARAM_LIST@168..170
185 L_PAREN@[168; 169) "(" 185 L_PAREN@168..169 "("
186 R_PAREN@[169; 170) ")" 186 R_PAREN@169..170 ")"
187 BLOCK_EXPR@[170; 172) 187 BLOCK_EXPR@170..172
188 BLOCK@[170; 172) 188 BLOCK@170..172
189 L_CURLY@[170; 171) "{" 189 L_CURLY@170..171 "{"
190 R_CURLY@[171; 172) "}" 190 R_CURLY@171..172 "}"
191 WHITESPACE@[172; 174) "\n\n" 191 WHITESPACE@172..174 "\n\n"
192 TRAIT_DEF@[174; 236) 192 TRAIT_DEF@174..236
193 TRAIT_KW@[174; 179) "trait" 193 TRAIT_KW@174..179 "trait"
194 WHITESPACE@[179; 180) " " 194 WHITESPACE@179..180 " "
195 NAME@[180; 183) 195 NAME@180..183
196 IDENT@[180; 183) "Foo" 196 IDENT@180..183 "Foo"
197 WHITESPACE@[183; 184) " " 197 WHITESPACE@183..184 " "
198 ITEM_LIST@[184; 236) 198 ITEM_LIST@184..236
199 L_CURLY@[184; 185) "{" 199 L_CURLY@184..185 "{"
200 WHITESPACE@[185; 190) "\n " 200 WHITESPACE@185..190 "\n "
201 FN_DEF@[190; 234) 201 FN_DEF@190..234
202 FN_KW@[190; 192) "fn" 202 FN_KW@190..192 "fn"
203 WHITESPACE@[192; 193) " " 203 WHITESPACE@192..193 " "
204 NAME@[193; 196) 204 NAME@193..196
205 IDENT@[193; 196) "bar" 205 IDENT@193..196 "bar"
206 PARAM_LIST@[196; 233) 206 PARAM_LIST@196..233
207 L_PAREN@[196; 197) "(" 207 L_PAREN@196..197 "("
208 ATTR@[197; 204) 208 ATTR@197..204
209 POUND@[197; 198) "#" 209 POUND@197..198 "#"
210 L_BRACK@[198; 199) "[" 210 L_BRACK@198..199 "["
211 PATH@[199; 203) 211 PATH@199..203
212 PATH_SEGMENT@[199; 203) 212 PATH_SEGMENT@199..203
213 NAME_REF@[199; 203) 213 NAME_REF@199..203
214 IDENT@[199; 203) "attr" 214 IDENT@199..203 "attr"
215 R_BRACK@[203; 204) "]" 215 R_BRACK@203..204 "]"
216 WHITESPACE@[204; 205) " " 216 WHITESPACE@204..205 " "
217 PARAM@[205; 211) 217 PARAM@205..211
218 PLACEHOLDER_PAT@[205; 206) 218 PLACEHOLDER_PAT@205..206
219 UNDERSCORE@[205; 206) "_" 219 UNDERSCORE@205..206 "_"
220 COLON@[206; 207) ":" 220 COLON@206..207 ":"
221 WHITESPACE@[207; 208) " " 221 WHITESPACE@207..208 " "
222 PATH_TYPE@[208; 211) 222 PATH_TYPE@208..211
223 PATH@[208; 211) 223 PATH@208..211
224 PATH_SEGMENT@[208; 211) 224 PATH_SEGMENT@208..211
225 NAME_REF@[208; 211) 225 NAME_REF@208..211
226 IDENT@[208; 211) "u64" 226 IDENT@208..211 "u64"
227 COMMA@[211; 212) "," 227 COMMA@211..212 ","
228 WHITESPACE@[212; 213) " " 228 WHITESPACE@212..213 " "
229 ATTR@[213; 221) 229 ATTR@213..221
230 POUND@[213; 214) "#" 230 POUND@213..214 "#"
231 WHITESPACE@[214; 215) " " 231 WHITESPACE@214..215 " "
232 L_BRACK@[215; 216) "[" 232 L_BRACK@215..216 "["
233 PATH@[216; 220) 233 PATH@216..220
234 PATH_SEGMENT@[216; 220) 234 PATH_SEGMENT@216..220
235 NAME_REF@[216; 220) 235 NAME_REF@216..220
236 IDENT@[216; 220) "attr" 236 IDENT@216..220 "attr"
237 R_BRACK@[220; 221) "]" 237 R_BRACK@220..221 "]"
238 WHITESPACE@[221; 222) " " 238 WHITESPACE@221..222 " "
239 PARAM@[222; 232) 239 PARAM@222..232
240 BIND_PAT@[222; 227) 240 BIND_PAT@222..227
241 MUT_KW@[222; 225) "mut" 241 MUT_KW@222..225 "mut"
242 WHITESPACE@[225; 226) " " 242 WHITESPACE@225..226 " "
243 NAME@[226; 227) 243 NAME@226..227
244 IDENT@[226; 227) "x" 244 IDENT@226..227 "x"
245 COLON@[227; 228) ":" 245 COLON@227..228 ":"
246 WHITESPACE@[228; 229) " " 246 WHITESPACE@228..229 " "
247 PATH_TYPE@[229; 232) 247 PATH_TYPE@229..232
248 PATH@[229; 232) 248 PATH@229..232
249 PATH_SEGMENT@[229; 232) 249 PATH_SEGMENT@229..232
250 NAME_REF@[229; 232) 250 NAME_REF@229..232
251 IDENT@[229; 232) "i32" 251 IDENT@229..232 "i32"
252 R_PAREN@[232; 233) ")" 252 R_PAREN@232..233 ")"
253 SEMICOLON@[233; 234) ";" 253 SEMICOLON@233..234 ";"
254 WHITESPACE@[234; 235) "\n" 254 WHITESPACE@234..235 "\n"
255 R_CURLY@[235; 236) "}" 255 R_CURLY@235..236 "}"
256 WHITESPACE@[236; 238) "\n\n" 256 WHITESPACE@236..238 "\n\n"
257 IMPL_DEF@[238; 519) 257 IMPL_DEF@238..519
258 IMPL_KW@[238; 242) "impl" 258 IMPL_KW@238..242 "impl"
259 WHITESPACE@[242; 243) " " 259 WHITESPACE@242..243 " "
260 PATH_TYPE@[243; 244) 260 PATH_TYPE@243..244
261 PATH@[243; 244) 261 PATH@243..244
262 PATH_SEGMENT@[243; 244) 262 PATH_SEGMENT@243..244
263 NAME_REF@[243; 244) 263 NAME_REF@243..244
264 IDENT@[243; 244) "S" 264 IDENT@243..244 "S"
265 WHITESPACE@[244; 245) " " 265 WHITESPACE@244..245 " "
266 ITEM_LIST@[245; 519) 266 ITEM_LIST@245..519
267 L_CURLY@[245; 246) "{" 267 L_CURLY@245..246 "{"
268 WHITESPACE@[246; 252) "\n " 268 WHITESPACE@246..252 "\n "
269 FN_DEF@[252; 277) 269 FN_DEF@252..277
270 FN_KW@[252; 254) "fn" 270 FN_KW@252..254 "fn"
271 WHITESPACE@[254; 255) " " 271 WHITESPACE@254..255 " "
272 NAME@[255; 256) 272 NAME@255..256
273 IDENT@[255; 256) "f" 273 IDENT@255..256 "f"
274 PARAM_LIST@[256; 274) 274 PARAM_LIST@256..274
275 L_PAREN@[256; 257) "(" 275 L_PAREN@256..257 "("
276 ATTR@[257; 268) 276 ATTR@257..268
277 POUND@[257; 258) "#" 277 POUND@257..258 "#"
278 L_BRACK@[258; 259) "[" 278 L_BRACK@258..259 "["
279 PATH@[259; 267) 279 PATH@259..267
280 PATH_SEGMENT@[259; 267) 280 PATH_SEGMENT@259..267
281 NAME_REF@[259; 267) 281 NAME_REF@259..267
282 IDENT@[259; 267) "must_use" 282 IDENT@259..267 "must_use"
283 R_BRACK@[267; 268) "]" 283 R_BRACK@267..268 "]"
284 WHITESPACE@[268; 269) " " 284 WHITESPACE@268..269 " "
285 SELF_PARAM@[269; 273) 285 SELF_PARAM@269..273
286 SELF_KW@[269; 273) "self" 286 SELF_KW@269..273 "self"
287 R_PAREN@[273; 274) ")" 287 R_PAREN@273..274 ")"
288 WHITESPACE@[274; 275) " " 288 WHITESPACE@274..275 " "
289 BLOCK_EXPR@[275; 277) 289 BLOCK_EXPR@275..277
290 BLOCK@[275; 277) 290 BLOCK@275..277
291 L_CURLY@[275; 276) "{" 291 L_CURLY@275..276 "{"
292 R_CURLY@[276; 277) "}" 292 R_CURLY@276..277 "}"
293 WHITESPACE@[277; 283) "\n " 293 WHITESPACE@277..283 "\n "
294 FN_DEF@[283; 305) 294 FN_DEF@283..305
295 FN_KW@[283; 285) "fn" 295 FN_KW@283..285 "fn"
296 WHITESPACE@[285; 286) " " 296 WHITESPACE@285..286 " "
297 NAME@[286; 288) 297 NAME@286..288
298 IDENT@[286; 288) "g1" 298 IDENT@286..288 "g1"
299 PARAM_LIST@[288; 302) 299 PARAM_LIST@288..302
300 L_PAREN@[288; 289) "(" 300 L_PAREN@288..289 "("
301 ATTR@[289; 296) 301 ATTR@289..296
302 POUND@[289; 290) "#" 302 POUND@289..290 "#"
303 L_BRACK@[290; 291) "[" 303 L_BRACK@290..291 "["
304 PATH@[291; 295) 304 PATH@291..295
305 PATH_SEGMENT@[291; 295) 305 PATH_SEGMENT@291..295
306 NAME_REF@[291; 295) 306 NAME_REF@291..295
307 IDENT@[291; 295) "attr" 307 IDENT@291..295 "attr"
308 R_BRACK@[295; 296) "]" 308 R_BRACK@295..296 "]"
309 WHITESPACE@[296; 297) " " 309 WHITESPACE@296..297 " "
310 SELF_PARAM@[297; 301) 310 SELF_PARAM@297..301
311 SELF_KW@[297; 301) "self" 311 SELF_KW@297..301 "self"
312 R_PAREN@[301; 302) ")" 312 R_PAREN@301..302 ")"
313 WHITESPACE@[302; 303) " " 313 WHITESPACE@302..303 " "
314 BLOCK_EXPR@[303; 305) 314 BLOCK_EXPR@303..305
315 BLOCK@[303; 305) 315 BLOCK@303..305
316 L_CURLY@[303; 304) "{" 316 L_CURLY@303..304 "{"
317 R_CURLY@[304; 305) "}" 317 R_CURLY@304..305 "}"
318 WHITESPACE@[305; 311) "\n " 318 WHITESPACE@305..311 "\n "
319 FN_DEF@[311; 334) 319 FN_DEF@311..334
320 FN_KW@[311; 313) "fn" 320 FN_KW@311..313 "fn"
321 WHITESPACE@[313; 314) " " 321 WHITESPACE@313..314 " "
322 NAME@[314; 316) 322 NAME@314..316
323 IDENT@[314; 316) "g2" 323 IDENT@314..316 "g2"
324 PARAM_LIST@[316; 331) 324 PARAM_LIST@316..331
325 L_PAREN@[316; 317) "(" 325 L_PAREN@316..317 "("
326 ATTR@[317; 324) 326 ATTR@317..324
327 POUND@[317; 318) "#" 327 POUND@317..318 "#"
328 L_BRACK@[318; 319) "[" 328 L_BRACK@318..319 "["
329 PATH@[319; 323) 329 PATH@319..323
330 PATH_SEGMENT@[319; 323) 330 PATH_SEGMENT@319..323
331 NAME_REF@[319; 323) 331 NAME_REF@319..323
332 IDENT@[319; 323) "attr" 332 IDENT@319..323 "attr"
333 R_BRACK@[323; 324) "]" 333 R_BRACK@323..324 "]"
334 WHITESPACE@[324; 325) " " 334 WHITESPACE@324..325 " "
335 SELF_PARAM@[325; 330) 335 SELF_PARAM@325..330
336 AMP@[325; 326) "&" 336 AMP@325..326 "&"
337 SELF_KW@[326; 330) "self" 337 SELF_KW@326..330 "self"
338 R_PAREN@[330; 331) ")" 338 R_PAREN@330..331 ")"
339 WHITESPACE@[331; 332) " " 339 WHITESPACE@331..332 " "
340 BLOCK_EXPR@[332; 334) 340 BLOCK_EXPR@332..334
341 BLOCK@[332; 334) 341 BLOCK@332..334
342 L_CURLY@[332; 333) "{" 342 L_CURLY@332..333 "{"
343 R_CURLY@[333; 334) "}" 343 R_CURLY@333..334 "}"
344 WHITESPACE@[334; 340) "\n " 344 WHITESPACE@334..340 "\n "
345 FN_DEF@[340; 371) 345 FN_DEF@340..371
346 FN_KW@[340; 342) "fn" 346 FN_KW@340..342 "fn"
347 WHITESPACE@[342; 343) " " 347 WHITESPACE@342..343 " "
348 NAME@[343; 345) 348 NAME@343..345
349 IDENT@[343; 345) "g3" 349 IDENT@343..345 "g3"
350 TYPE_PARAM_LIST@[345; 349) 350 TYPE_PARAM_LIST@345..349
351 L_ANGLE@[345; 346) "<" 351 L_ANGLE@345..346 "<"
352 LIFETIME_PARAM@[346; 348) 352 LIFETIME_PARAM@346..348
353 LIFETIME@[346; 348) "\'a" 353 LIFETIME@346..348 "\'a"
354 R_ANGLE@[348; 349) ">" 354 R_ANGLE@348..349 ">"
355 PARAM_LIST@[349; 368) 355 PARAM_LIST@349..368
356 L_PAREN@[349; 350) "(" 356 L_PAREN@349..350 "("
357 ATTR@[350; 357) 357 ATTR@350..357
358 POUND@[350; 351) "#" 358 POUND@350..351 "#"
359 L_BRACK@[351; 352) "[" 359 L_BRACK@351..352 "["
360 PATH@[352; 356) 360 PATH@352..356
361 PATH_SEGMENT@[352; 356) 361 PATH_SEGMENT@352..356
362 NAME_REF@[352; 356) 362 NAME_REF@352..356
363 IDENT@[352; 356) "attr" 363 IDENT@352..356 "attr"
364 R_BRACK@[356; 357) "]" 364 R_BRACK@356..357 "]"
365 WHITESPACE@[357; 358) " " 365 WHITESPACE@357..358 " "
366 SELF_PARAM@[358; 367) 366 SELF_PARAM@358..367
367 AMP@[358; 359) "&" 367 AMP@358..359 "&"
368 MUT_KW@[359; 362) "mut" 368 MUT_KW@359..362 "mut"
369 WHITESPACE@[362; 363) " " 369 WHITESPACE@362..363 " "
370 SELF_KW@[363; 367) "self" 370 SELF_KW@363..367 "self"
371 R_PAREN@[367; 368) ")" 371 R_PAREN@367..368 ")"
372 WHITESPACE@[368; 369) " " 372 WHITESPACE@368..369 " "
373 BLOCK_EXPR@[369; 371) 373 BLOCK_EXPR@369..371
374 BLOCK@[369; 371) 374 BLOCK@369..371
375 L_CURLY@[369; 370) "{" 375 L_CURLY@369..370 "{"
376 R_CURLY@[370; 371) "}" 376 R_CURLY@370..371 "}"
377 WHITESPACE@[371; 377) "\n " 377 WHITESPACE@371..377 "\n "
378 FN_DEF@[377; 407) 378 FN_DEF@377..407
379 FN_KW@[377; 379) "fn" 379 FN_KW@377..379 "fn"
380 WHITESPACE@[379; 380) " " 380 WHITESPACE@379..380 " "
381 NAME@[380; 382) 381 NAME@380..382
382 IDENT@[380; 382) "g4" 382 IDENT@380..382 "g4"
383 TYPE_PARAM_LIST@[382; 386) 383 TYPE_PARAM_LIST@382..386
384 L_ANGLE@[382; 383) "<" 384 L_ANGLE@382..383 "<"
385 LIFETIME_PARAM@[383; 385) 385 LIFETIME_PARAM@383..385
386 LIFETIME@[383; 385) "\'a" 386 LIFETIME@383..385 "\'a"
387 R_ANGLE@[385; 386) ">" 387 R_ANGLE@385..386 ">"
388 PARAM_LIST@[386; 404) 388 PARAM_LIST@386..404
389 L_PAREN@[386; 387) "(" 389 L_PAREN@386..387 "("
390 ATTR@[387; 394) 390 ATTR@387..394
391 POUND@[387; 388) "#" 391 POUND@387..388 "#"
392 L_BRACK@[388; 389) "[" 392 L_BRACK@388..389 "["
393 PATH@[389; 393) 393 PATH@389..393
394 PATH_SEGMENT@[389; 393) 394 PATH_SEGMENT@389..393
395 NAME_REF@[389; 393) 395 NAME_REF@389..393
396 IDENT@[389; 393) "attr" 396 IDENT@389..393 "attr"
397 R_BRACK@[393; 394) "]" 397 R_BRACK@393..394 "]"
398 WHITESPACE@[394; 395) " " 398 WHITESPACE@394..395 " "
399 SELF_PARAM@[395; 403) 399 SELF_PARAM@395..403
400 AMP@[395; 396) "&" 400 AMP@395..396 "&"
401 LIFETIME@[396; 398) "\'a" 401 LIFETIME@396..398 "\'a"
402 WHITESPACE@[398; 399) " " 402 WHITESPACE@398..399 " "
403 SELF_KW@[399; 403) "self" 403 SELF_KW@399..403 "self"
404 R_PAREN@[403; 404) ")" 404 R_PAREN@403..404 ")"
405 WHITESPACE@[404; 405) " " 405 WHITESPACE@404..405 " "
406 BLOCK_EXPR@[405; 407) 406 BLOCK_EXPR@405..407
407 BLOCK@[405; 407) 407 BLOCK@405..407
408 L_CURLY@[405; 406) "{" 408 L_CURLY@405..406 "{"
409 R_CURLY@[406; 407) "}" 409 R_CURLY@406..407 "}"
410 WHITESPACE@[407; 413) "\n " 410 WHITESPACE@407..413 "\n "
411 FN_DEF@[413; 447) 411 FN_DEF@413..447
412 FN_KW@[413; 415) "fn" 412 FN_KW@413..415 "fn"
413 WHITESPACE@[415; 416) " " 413 WHITESPACE@415..416 " "
414 NAME@[416; 418) 414 NAME@416..418
415 IDENT@[416; 418) "g5" 415 IDENT@416..418 "g5"
416 TYPE_PARAM_LIST@[418; 422) 416 TYPE_PARAM_LIST@418..422
417 L_ANGLE@[418; 419) "<" 417 L_ANGLE@418..419 "<"
418 LIFETIME_PARAM@[419; 421) 418 LIFETIME_PARAM@419..421
419 LIFETIME@[419; 421) "\'a" 419 LIFETIME@419..421 "\'a"
420 R_ANGLE@[421; 422) ">" 420 R_ANGLE@421..422 ">"
421 PARAM_LIST@[422; 444) 421 PARAM_LIST@422..444
422 L_PAREN@[422; 423) "(" 422 L_PAREN@422..423 "("
423 ATTR@[423; 430) 423 ATTR@423..430
424 POUND@[423; 424) "#" 424 POUND@423..424 "#"
425 L_BRACK@[424; 425) "[" 425 L_BRACK@424..425 "["
426 PATH@[425; 429) 426 PATH@425..429
427 PATH_SEGMENT@[425; 429) 427 PATH_SEGMENT@425..429
428 NAME_REF@[425; 429) 428 NAME_REF@425..429
429 IDENT@[425; 429) "attr" 429 IDENT@425..429 "attr"
430 R_BRACK@[429; 430) "]" 430 R_BRACK@429..430 "]"
431 WHITESPACE@[430; 431) " " 431 WHITESPACE@430..431 " "
432 SELF_PARAM@[431; 443) 432 SELF_PARAM@431..443
433 AMP@[431; 432) "&" 433 AMP@431..432 "&"
434 LIFETIME@[432; 434) "\'a" 434 LIFETIME@432..434 "\'a"
435 WHITESPACE@[434; 435) " " 435 WHITESPACE@434..435 " "
436 MUT_KW@[435; 438) "mut" 436 MUT_KW@435..438 "mut"
437 WHITESPACE@[438; 439) " " 437 WHITESPACE@438..439 " "
438 SELF_KW@[439; 443) "self" 438 SELF_KW@439..443 "self"
439 R_PAREN@[443; 444) ")" 439 R_PAREN@443..444 ")"
440 WHITESPACE@[444; 445) " " 440 WHITESPACE@444..445 " "
441 BLOCK_EXPR@[445; 447) 441 BLOCK_EXPR@445..447
442 BLOCK@[445; 447) 442 BLOCK@445..447
443 L_CURLY@[445; 446) "{" 443 L_CURLY@445..446 "{"
444 R_CURLY@[446; 447) "}" 444 R_CURLY@446..447 "}"
445 WHITESPACE@[447; 453) "\n " 445 WHITESPACE@447..453 "\n "
446 FN_DEF@[453; 480) 446 FN_DEF@453..480
447 FN_KW@[453; 455) "fn" 447 FN_KW@453..455 "fn"
448 WHITESPACE@[455; 456) " " 448 WHITESPACE@455..456 " "
449 NAME@[456; 457) 449 NAME@456..457
450 IDENT@[456; 457) "c" 450 IDENT@456..457 "c"
451 PARAM_LIST@[457; 477) 451 PARAM_LIST@457..477
452 L_PAREN@[457; 458) "(" 452 L_PAREN@457..458 "("
453 ATTR@[458; 465) 453 ATTR@458..465
454 POUND@[458; 459) "#" 454 POUND@458..459 "#"
455 L_BRACK@[459; 460) "[" 455 L_BRACK@459..460 "["
456 PATH@[460; 464) 456 PATH@460..464
457 PATH_SEGMENT@[460; 464) 457 PATH_SEGMENT@460..464
458 NAME_REF@[460; 464) 458 NAME_REF@460..464
459 IDENT@[460; 464) "attr" 459 IDENT@460..464 "attr"
460 R_BRACK@[464; 465) "]" 460 R_BRACK@464..465 "]"
461 WHITESPACE@[465; 466) " " 461 WHITESPACE@465..466 " "
462 SELF_PARAM@[466; 476) 462 SELF_PARAM@466..476
463 SELF_KW@[466; 470) "self" 463 SELF_KW@466..470 "self"
464 COLON@[470; 471) ":" 464 COLON@470..471 ":"
465 WHITESPACE@[471; 472) " " 465 WHITESPACE@471..472 " "
466 PATH_TYPE@[472; 476) 466 PATH_TYPE@472..476
467 PATH@[472; 476) 467 PATH@472..476
468 PATH_SEGMENT@[472; 476) 468 PATH_SEGMENT@472..476
469 NAME_REF@[472; 476) 469 NAME_REF@472..476
470 IDENT@[472; 476) "Self" 470 IDENT@472..476 "Self"
471 R_PAREN@[476; 477) ")" 471 R_PAREN@476..477 ")"
472 WHITESPACE@[477; 478) " " 472 WHITESPACE@477..478 " "
473 BLOCK_EXPR@[478; 480) 473 BLOCK_EXPR@478..480
474 BLOCK@[478; 480) 474 BLOCK@478..480
475 L_CURLY@[478; 479) "{" 475 L_CURLY@478..479 "{"
476 R_CURLY@[479; 480) "}" 476 R_CURLY@479..480 "}"
477 WHITESPACE@[480; 486) "\n " 477 WHITESPACE@480..486 "\n "
478 FN_DEF@[486; 517) 478 FN_DEF@486..517
479 FN_KW@[486; 488) "fn" 479 FN_KW@486..488 "fn"
480 WHITESPACE@[488; 489) " " 480 WHITESPACE@488..489 " "
481 NAME@[489; 490) 481 NAME@489..490
482 IDENT@[489; 490) "d" 482 IDENT@489..490 "d"
483 PARAM_LIST@[490; 514) 483 PARAM_LIST@490..514
484 L_PAREN@[490; 491) "(" 484 L_PAREN@490..491 "("
485 ATTR@[491; 498) 485 ATTR@491..498
486 POUND@[491; 492) "#" 486 POUND@491..492 "#"
487 L_BRACK@[492; 493) "[" 487 L_BRACK@492..493 "["
488 PATH@[493; 497) 488 PATH@493..497
489 PATH_SEGMENT@[493; 497) 489 PATH_SEGMENT@493..497
490 NAME_REF@[493; 497) 490 NAME_REF@493..497
491 IDENT@[493; 497) "attr" 491 IDENT@493..497 "attr"
492 R_BRACK@[497; 498) "]" 492 R_BRACK@497..498 "]"
493 WHITESPACE@[498; 499) " " 493 WHITESPACE@498..499 " "
494 SELF_PARAM@[499; 513) 494 SELF_PARAM@499..513
495 SELF_KW@[499; 503) "self" 495 SELF_KW@499..503 "self"
496 COLON@[503; 504) ":" 496 COLON@503..504 ":"
497 WHITESPACE@[504; 505) " " 497 WHITESPACE@504..505 " "
498 PATH_TYPE@[505; 513) 498 PATH_TYPE@505..513
499 PATH@[505; 513) 499 PATH@505..513
500 PATH_SEGMENT@[505; 513) 500 PATH_SEGMENT@505..513
501 NAME_REF@[505; 507) 501 NAME_REF@505..507
502 IDENT@[505; 507) "Rc" 502 IDENT@505..507 "Rc"
503 TYPE_ARG_LIST@[507; 513) 503 TYPE_ARG_LIST@507..513
504 L_ANGLE@[507; 508) "<" 504 L_ANGLE@507..508 "<"
505 TYPE_ARG@[508; 512) 505 TYPE_ARG@508..512
506 PATH_TYPE@[508; 512) 506 PATH_TYPE@508..512
507 PATH@[508; 512) 507 PATH@508..512
508 PATH_SEGMENT@[508; 512) 508 PATH_SEGMENT@508..512
509 NAME_REF@[508; 512) 509 NAME_REF@508..512
510 IDENT@[508; 512) "Self" 510 IDENT@508..512 "Self"
511 R_ANGLE@[512; 513) ">" 511 R_ANGLE@512..513 ">"
512 R_PAREN@[513; 514) ")" 512 R_PAREN@513..514 ")"
513 WHITESPACE@[514; 515) " " 513 WHITESPACE@514..515 " "
514 BLOCK_EXPR@[515; 517) 514 BLOCK_EXPR@515..517
515 BLOCK@[515; 517) 515 BLOCK@515..517
516 L_CURLY@[515; 516) "{" 516 L_CURLY@515..516 "{"
517 R_CURLY@[516; 517) "}" 517 R_CURLY@516..517 "}"
518 WHITESPACE@[517; 518) "\n" 518 WHITESPACE@517..518 "\n"
519 R_CURLY@[518; 519) "}" 519 R_CURLY@518..519 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0052_for_range_block.rast b/crates/ra_syntax/test_data/parser/ok/0052_for_range_block.rast
index 473966cd4..f376f86a7 100644
--- a/crates/ra_syntax/test_data/parser/ok/0052_for_range_block.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0052_for_range_block.rast
@@ -1,81 +1,81 @@
1SOURCE_FILE@[0; 80) 1SOURCE_FILE@0..80
2 FN_DEF@[0; 79) 2 FN_DEF@0..79
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 79) 11 BLOCK_EXPR@9..79
12 BLOCK@[9; 79) 12 BLOCK@9..79
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 14) "\n " 14 WHITESPACE@10..14 "\n "
15 FOR_EXPR@[14; 77) 15 FOR_EXPR@14..77
16 FOR_KW@[14; 17) "for" 16 FOR_KW@14..17 "for"
17 WHITESPACE@[17; 18) " " 17 WHITESPACE@17..18 " "
18 BIND_PAT@[18; 20) 18 BIND_PAT@18..20
19 NAME@[18; 20) 19 NAME@18..20
20 IDENT@[18; 20) "_x" 20 IDENT@18..20 "_x"
21 WHITESPACE@[20; 21) " " 21 WHITESPACE@20..21 " "
22 IN_KW@[21; 23) "in" 22 IN_KW@21..23 "in"
23 WHITESPACE@[23; 24) " " 23 WHITESPACE@23..24 " "
24 RANGE_EXPR@[24; 56) 24 RANGE_EXPR@24..56
25 LITERAL@[24; 25) 25 LITERAL@24..25
26 INT_NUMBER@[24; 25) "0" 26 INT_NUMBER@24..25 "0"
27 WHITESPACE@[25; 26) " " 27 WHITESPACE@25..26 " "
28 DOT2@[26; 28) ".." 28 DOT2@26..28 ".."
29 WHITESPACE@[28; 29) " " 29 WHITESPACE@28..29 " "
30 METHOD_CALL_EXPR@[29; 56) 30 METHOD_CALL_EXPR@29..56
31 PAREN_EXPR@[29; 43) 31 PAREN_EXPR@29..43
32 L_PAREN@[29; 30) "(" 32 L_PAREN@29..30 "("
33 RANGE_EXPR@[30; 42) 33 RANGE_EXPR@30..42
34 LITERAL@[30; 31) 34 LITERAL@30..31
35 INT_NUMBER@[30; 31) "0" 35 INT_NUMBER@30..31 "0"
36 WHITESPACE@[31; 32) " " 36 WHITESPACE@31..32 " "
37 DOT2@[32; 34) ".." 37 DOT2@32..34 ".."
38 WHITESPACE@[34; 35) " " 38 WHITESPACE@34..35 " "
39 BLOCK_EXPR@[35; 42) 39 BLOCK_EXPR@35..42
40 BLOCK@[35; 42) 40 BLOCK@35..42
41 L_CURLY@[35; 36) "{" 41 L_CURLY@35..36 "{"
42 BIN_EXPR@[36; 41) 42 BIN_EXPR@36..41
43 LITERAL@[36; 37) 43 LITERAL@36..37
44 INT_NUMBER@[36; 37) "1" 44 INT_NUMBER@36..37 "1"
45 WHITESPACE@[37; 38) " " 45 WHITESPACE@37..38 " "
46 PLUS@[38; 39) "+" 46 PLUS@38..39 "+"
47 WHITESPACE@[39; 40) " " 47 WHITESPACE@39..40 " "
48 LITERAL@[40; 41) 48 LITERAL@40..41
49 INT_NUMBER@[40; 41) "2" 49 INT_NUMBER@40..41 "2"
50 R_CURLY@[41; 42) "}" 50 R_CURLY@41..42 "}"
51 R_PAREN@[42; 43) ")" 51 R_PAREN@42..43 ")"
52 DOT@[43; 44) "." 52 DOT@43..44 "."
53 NAME_REF@[44; 47) 53 NAME_REF@44..47
54 IDENT@[44; 47) "sum" 54 IDENT@44..47 "sum"
55 TYPE_ARG_LIST@[47; 54) 55 TYPE_ARG_LIST@47..54
56 COLON2@[47; 49) "::" 56 COLON2@47..49 "::"
57 L_ANGLE@[49; 50) "<" 57 L_ANGLE@49..50 "<"
58 TYPE_ARG@[50; 53) 58 TYPE_ARG@50..53
59 PATH_TYPE@[50; 53) 59 PATH_TYPE@50..53
60 PATH@[50; 53) 60 PATH@50..53
61 PATH_SEGMENT@[50; 53) 61 PATH_SEGMENT@50..53
62 NAME_REF@[50; 53) 62 NAME_REF@50..53
63 IDENT@[50; 53) "u32" 63 IDENT@50..53 "u32"
64 R_ANGLE@[53; 54) ">" 64 R_ANGLE@53..54 ">"
65 ARG_LIST@[54; 56) 65 ARG_LIST@54..56
66 L_PAREN@[54; 55) "(" 66 L_PAREN@54..55 "("
67 R_PAREN@[55; 56) ")" 67 R_PAREN@55..56 ")"
68 WHITESPACE@[56; 57) " " 68 WHITESPACE@56..57 " "
69 BLOCK_EXPR@[57; 77) 69 BLOCK_EXPR@57..77
70 BLOCK@[57; 77) 70 BLOCK@57..77
71 L_CURLY@[57; 58) "{" 71 L_CURLY@57..58 "{"
72 WHITESPACE@[58; 66) "\n " 72 WHITESPACE@58..66 "\n "
73 EXPR_STMT@[66; 72) 73 EXPR_STMT@66..72
74 BREAK_EXPR@[66; 71) 74 BREAK_EXPR@66..71
75 BREAK_KW@[66; 71) "break" 75 BREAK_KW@66..71 "break"
76 SEMICOLON@[71; 72) ";" 76 SEMICOLON@71..72 ";"
77 WHITESPACE@[72; 76) "\n " 77 WHITESPACE@72..76 "\n "
78 R_CURLY@[76; 77) "}" 78 R_CURLY@76..77 "}"
79 WHITESPACE@[77; 78) "\n" 79 WHITESPACE@77..78 "\n"
80 R_CURLY@[78; 79) "}" 80 R_CURLY@78..79 "}"
81 WHITESPACE@[79; 80) "\n" 81 WHITESPACE@79..80 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast b/crates/ra_syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast
index 60a491853..be60f7a8e 100644
--- a/crates/ra_syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0053_outer_attribute_on_macro_rules.rast
@@ -1,39 +1,39 @@
1SOURCE_FILE@[0; 65) 1SOURCE_FILE@0..65
2 MACRO_CALL@[0; 64) 2 MACRO_CALL@0..64
3 COMMENT@[0; 13) "/// Some docs" 3 COMMENT@0..13 "/// Some docs"
4 WHITESPACE@[13; 14) "\n" 4 WHITESPACE@13..14 "\n"
5 ATTR@[14; 29) 5 ATTR@14..29
6 POUND@[14; 15) "#" 6 POUND@14..15 "#"
7 L_BRACK@[15; 16) "[" 7 L_BRACK@15..16 "["
8 PATH@[16; 28) 8 PATH@16..28
9 PATH_SEGMENT@[16; 28) 9 PATH_SEGMENT@16..28
10 NAME_REF@[16; 28) 10 NAME_REF@16..28
11 IDENT@[16; 28) "macro_export" 11 IDENT@16..28 "macro_export"
12 R_BRACK@[28; 29) "]" 12 R_BRACK@28..29 "]"
13 WHITESPACE@[29; 30) "\n" 13 WHITESPACE@29..30 "\n"
14 PATH@[30; 41) 14 PATH@30..41
15 PATH_SEGMENT@[30; 41) 15 PATH_SEGMENT@30..41
16 NAME_REF@[30; 41) 16 NAME_REF@30..41
17 IDENT@[30; 41) "macro_rules" 17 IDENT@30..41 "macro_rules"
18 BANG@[41; 42) "!" 18 BANG@41..42 "!"
19 WHITESPACE@[42; 43) " " 19 WHITESPACE@42..43 " "
20 NAME@[43; 46) 20 NAME@43..46
21 IDENT@[43; 46) "foo" 21 IDENT@43..46 "foo"
22 WHITESPACE@[46; 47) " " 22 WHITESPACE@46..47 " "
23 TOKEN_TREE@[47; 64) 23 TOKEN_TREE@47..64
24 L_CURLY@[47; 48) "{" 24 L_CURLY@47..48 "{"
25 WHITESPACE@[48; 53) "\n " 25 WHITESPACE@48..53 "\n "
26 TOKEN_TREE@[53; 55) 26 TOKEN_TREE@53..55
27 L_PAREN@[53; 54) "(" 27 L_PAREN@53..54 "("
28 R_PAREN@[54; 55) ")" 28 R_PAREN@54..55 ")"
29 WHITESPACE@[55; 56) " " 29 WHITESPACE@55..56 " "
30 EQ@[56; 57) "=" 30 EQ@56..57 "="
31 R_ANGLE@[57; 58) ">" 31 R_ANGLE@57..58 ">"
32 WHITESPACE@[58; 59) " " 32 WHITESPACE@58..59 " "
33 TOKEN_TREE@[59; 61) 33 TOKEN_TREE@59..61
34 L_CURLY@[59; 60) "{" 34 L_CURLY@59..60 "{"
35 R_CURLY@[60; 61) "}" 35 R_CURLY@60..61 "}"
36 SEMICOLON@[61; 62) ";" 36 SEMICOLON@61..62 ";"
37 WHITESPACE@[62; 63) "\n" 37 WHITESPACE@62..63 "\n"
38 R_CURLY@[63; 64) "}" 38 R_CURLY@63..64 "}"
39 WHITESPACE@[64; 65) "\n" 39 WHITESPACE@64..65 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rast b/crates/ra_syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rast
index fabf88e8f..f20819bd2 100644
--- a/crates/ra_syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0054_qual_path_in_type_arg.rast
@@ -1,126 +1,126 @@
1SOURCE_FILE@[0; 88) 1SOURCE_FILE@0..88
2 FN_DEF@[0; 26) 2 FN_DEF@0..26
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 4) 5 NAME@3..4
6 IDENT@[3; 4) "a" 6 IDENT@3..4 "a"
7 PARAM_LIST@[4; 6) 7 PARAM_LIST@4..6
8 L_PAREN@[4; 5) "(" 8 L_PAREN@4..5 "("
9 R_PAREN@[5; 6) ")" 9 R_PAREN@5..6 ")"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 RET_TYPE@[7; 23) 11 RET_TYPE@7..23
12 THIN_ARROW@[7; 9) "->" 12 THIN_ARROW@7..9 "->"
13 WHITESPACE@[9; 10) " " 13 WHITESPACE@9..10 " "
14 PATH_TYPE@[10; 23) 14 PATH_TYPE@10..23
15 PATH@[10; 23) 15 PATH@10..23
16 PATH_SEGMENT@[10; 23) 16 PATH_SEGMENT@10..23
17 NAME_REF@[10; 13) 17 NAME_REF@10..13
18 IDENT@[10; 13) "Foo" 18 IDENT@10..13 "Foo"
19 TYPE_ARG_LIST@[13; 23) 19 TYPE_ARG_LIST@13..23
20 L_ANGLE@[13; 14) "<" 20 L_ANGLE@13..14 "<"
21 TYPE_ARG@[14; 22) 21 TYPE_ARG@14..22
22 PATH_TYPE@[14; 22) 22 PATH_TYPE@14..22
23 PATH@[14; 22) 23 PATH@14..22
24 PATH@[14; 17) 24 PATH@14..17
25 PATH_SEGMENT@[14; 17) 25 PATH_SEGMENT@14..17
26 NAME_REF@[14; 17) 26 NAME_REF@14..17
27 IDENT@[14; 17) "bar" 27 IDENT@14..17 "bar"
28 COLON2@[17; 19) "::" 28 COLON2@17..19 "::"
29 PATH_SEGMENT@[19; 22) 29 PATH_SEGMENT@19..22
30 NAME_REF@[19; 22) 30 NAME_REF@19..22
31 IDENT@[19; 22) "Baz" 31 IDENT@19..22 "Baz"
32 R_ANGLE@[22; 23) ">" 32 R_ANGLE@22..23 ">"
33 WHITESPACE@[23; 24) " " 33 WHITESPACE@23..24 " "
34 BLOCK_EXPR@[24; 26) 34 BLOCK_EXPR@24..26
35 BLOCK@[24; 26) 35 BLOCK@24..26
36 L_CURLY@[24; 25) "{" 36 L_CURLY@24..25 "{"
37 R_CURLY@[25; 26) "}" 37 R_CURLY@25..26 "}"
38 WHITESPACE@[26; 28) "\n\n" 38 WHITESPACE@26..28 "\n\n"
39 FN_DEF@[28; 56) 39 FN_DEF@28..56
40 FN_KW@[28; 30) "fn" 40 FN_KW@28..30 "fn"
41 WHITESPACE@[30; 31) " " 41 WHITESPACE@30..31 " "
42 NAME@[31; 32) 42 NAME@31..32
43 IDENT@[31; 32) "b" 43 IDENT@31..32 "b"
44 PARAM_LIST@[32; 53) 44 PARAM_LIST@32..53
45 L_PAREN@[32; 33) "(" 45 L_PAREN@32..33 "("
46 PARAM@[33; 52) 46 PARAM@33..52
47 PLACEHOLDER_PAT@[33; 34) 47 PLACEHOLDER_PAT@33..34
48 UNDERSCORE@[33; 34) "_" 48 UNDERSCORE@33..34 "_"
49 COLON@[34; 35) ":" 49 COLON@34..35 ":"
50 WHITESPACE@[35; 36) " " 50 WHITESPACE@35..36 " "
51 IMPL_TRAIT_TYPE@[36; 52) 51 IMPL_TRAIT_TYPE@36..52
52 IMPL_KW@[36; 40) "impl" 52 IMPL_KW@36..40 "impl"
53 WHITESPACE@[40; 41) " " 53 WHITESPACE@40..41 " "
54 TYPE_BOUND_LIST@[41; 52) 54 TYPE_BOUND_LIST@41..52
55 TYPE_BOUND@[41; 52) 55 TYPE_BOUND@41..52
56 PATH_TYPE@[41; 52) 56 PATH_TYPE@41..52
57 PATH@[41; 52) 57 PATH@41..52
58 PATH_SEGMENT@[41; 52) 58 PATH_SEGMENT@41..52
59 NAME_REF@[41; 46) 59 NAME_REF@41..46
60 IDENT@[41; 46) "FnMut" 60 IDENT@41..46 "FnMut"
61 PARAM_LIST@[46; 52) 61 PARAM_LIST@46..52
62 L_PAREN@[46; 47) "(" 62 L_PAREN@46..47 "("
63 PARAM@[47; 51) 63 PARAM@47..51
64 PATH_TYPE@[47; 51) 64 PATH_TYPE@47..51
65 PATH@[47; 51) 65 PATH@47..51
66 PATH@[47; 48) 66 PATH@47..48
67 PATH_SEGMENT@[47; 48) 67 PATH_SEGMENT@47..48
68 NAME_REF@[47; 48) 68 NAME_REF@47..48
69 IDENT@[47; 48) "x" 69 IDENT@47..48 "x"
70 COLON2@[48; 50) "::" 70 COLON2@48..50 "::"
71 PATH_SEGMENT@[50; 51) 71 PATH_SEGMENT@50..51
72 NAME_REF@[50; 51) 72 NAME_REF@50..51
73 IDENT@[50; 51) "Y" 73 IDENT@50..51 "Y"
74 R_PAREN@[51; 52) ")" 74 R_PAREN@51..52 ")"
75 R_PAREN@[52; 53) ")" 75 R_PAREN@52..53 ")"
76 WHITESPACE@[53; 54) " " 76 WHITESPACE@53..54 " "
77 BLOCK_EXPR@[54; 56) 77 BLOCK_EXPR@54..56
78 BLOCK@[54; 56) 78 BLOCK@54..56
79 L_CURLY@[54; 55) "{" 79 L_CURLY@54..55 "{"
80 R_CURLY@[55; 56) "}" 80 R_CURLY@55..56 "}"
81 WHITESPACE@[56; 58) "\n\n" 81 WHITESPACE@56..58 "\n\n"
82 FN_DEF@[58; 87) 82 FN_DEF@58..87
83 FN_KW@[58; 60) "fn" 83 FN_KW@58..60 "fn"
84 WHITESPACE@[60; 61) " " 84 WHITESPACE@60..61 " "
85 NAME@[61; 62) 85 NAME@61..62
86 IDENT@[61; 62) "c" 86 IDENT@61..62 "c"
87 PARAM_LIST@[62; 84) 87 PARAM_LIST@62..84
88 L_PAREN@[62; 63) "(" 88 L_PAREN@62..63 "("
89 PARAM@[63; 83) 89 PARAM@63..83
90 PLACEHOLDER_PAT@[63; 64) 90 PLACEHOLDER_PAT@63..64
91 UNDERSCORE@[63; 64) "_" 91 UNDERSCORE@63..64 "_"
92 COLON@[64; 65) ":" 92 COLON@64..65 ":"
93 WHITESPACE@[65; 66) " " 93 WHITESPACE@65..66 " "
94 IMPL_TRAIT_TYPE@[66; 83) 94 IMPL_TRAIT_TYPE@66..83
95 IMPL_KW@[66; 70) "impl" 95 IMPL_KW@66..70 "impl"
96 WHITESPACE@[70; 71) " " 96 WHITESPACE@70..71 " "
97 TYPE_BOUND_LIST@[71; 83) 97 TYPE_BOUND_LIST@71..83
98 TYPE_BOUND@[71; 83) 98 TYPE_BOUND@71..83
99 PATH_TYPE@[71; 83) 99 PATH_TYPE@71..83
100 PATH@[71; 83) 100 PATH@71..83
101 PATH_SEGMENT@[71; 83) 101 PATH_SEGMENT@71..83
102 NAME_REF@[71; 76) 102 NAME_REF@71..76
103 IDENT@[71; 76) "FnMut" 103 IDENT@71..76 "FnMut"
104 PARAM_LIST@[76; 83) 104 PARAM_LIST@76..83
105 L_PAREN@[76; 77) "(" 105 L_PAREN@76..77 "("
106 PARAM@[77; 82) 106 PARAM@77..82
107 REFERENCE_TYPE@[77; 82) 107 REFERENCE_TYPE@77..82
108 AMP@[77; 78) "&" 108 AMP@77..78 "&"
109 PATH_TYPE@[78; 82) 109 PATH_TYPE@78..82
110 PATH@[78; 82) 110 PATH@78..82
111 PATH@[78; 79) 111 PATH@78..79
112 PATH_SEGMENT@[78; 79) 112 PATH_SEGMENT@78..79
113 NAME_REF@[78; 79) 113 NAME_REF@78..79
114 IDENT@[78; 79) "x" 114 IDENT@78..79 "x"
115 COLON2@[79; 81) "::" 115 COLON2@79..81 "::"
116 PATH_SEGMENT@[81; 82) 116 PATH_SEGMENT@81..82
117 NAME_REF@[81; 82) 117 NAME_REF@81..82
118 IDENT@[81; 82) "Y" 118 IDENT@81..82 "Y"
119 R_PAREN@[82; 83) ")" 119 R_PAREN@82..83 ")"
120 R_PAREN@[83; 84) ")" 120 R_PAREN@83..84 ")"
121 WHITESPACE@[84; 85) " " 121 WHITESPACE@84..85 " "
122 BLOCK_EXPR@[85; 87) 122 BLOCK_EXPR@85..87
123 BLOCK@[85; 87) 123 BLOCK@85..87
124 L_CURLY@[85; 86) "{" 124 L_CURLY@85..86 "{"
125 R_CURLY@[86; 87) "}" 125 R_CURLY@86..87 "}"
126 WHITESPACE@[87; 88) "\n" 126 WHITESPACE@87..88 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0055_dot_dot_dot.rast b/crates/ra_syntax/test_data/parser/ok/0055_dot_dot_dot.rast
index 6ac3f1458..dcdb3cc6d 100644
--- a/crates/ra_syntax/test_data/parser/ok/0055_dot_dot_dot.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0055_dot_dot_dot.rast
@@ -1,50 +1,50 @@
1SOURCE_FILE@[0; 49) 1SOURCE_FILE@0..49
2 TYPE_ALIAS_DEF@[0; 12) 2 TYPE_ALIAS_DEF@0..12
3 TYPE_KW@[0; 4) "type" 3 TYPE_KW@0..4 "type"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 NAME@[5; 6) 5 NAME@5..6
6 IDENT@[5; 6) "X" 6 IDENT@5..6 "X"
7 WHITESPACE@[6; 7) " " 7 WHITESPACE@6..7 " "
8 EQ@[7; 8) "=" 8 EQ@7..8 "="
9 WHITESPACE@[8; 9) " " 9 WHITESPACE@8..9 " "
10 TUPLE_TYPE@[9; 11) 10 TUPLE_TYPE@9..11
11 L_PAREN@[9; 10) "(" 11 L_PAREN@9..10 "("
12 R_PAREN@[10; 11) ")" 12 R_PAREN@10..11 ")"
13 SEMICOLON@[11; 12) ";" 13 SEMICOLON@11..12 ";"
14 WHITESPACE@[12; 14) "\n\n" 14 WHITESPACE@12..14 "\n\n"
15 FN_DEF@[14; 48) 15 FN_DEF@14..48
16 FN_KW@[14; 16) "fn" 16 FN_KW@14..16 "fn"
17 WHITESPACE@[16; 17) " " 17 WHITESPACE@16..17 " "
18 NAME@[17; 21) 18 NAME@17..21
19 IDENT@[17; 21) "main" 19 IDENT@17..21 "main"
20 PARAM_LIST@[21; 23) 20 PARAM_LIST@21..23
21 L_PAREN@[21; 22) "(" 21 L_PAREN@21..22 "("
22 R_PAREN@[22; 23) ")" 22 R_PAREN@22..23 ")"
23 WHITESPACE@[23; 24) " " 23 WHITESPACE@23..24 " "
24 BLOCK_EXPR@[24; 48) 24 BLOCK_EXPR@24..48
25 BLOCK@[24; 48) 25 BLOCK@24..48
26 L_CURLY@[24; 25) "{" 26 L_CURLY@24..25 "{"
27 WHITESPACE@[25; 30) "\n " 27 WHITESPACE@25..30 "\n "
28 LET_STMT@[30; 46) 28 LET_STMT@30..46
29 LET_KW@[30; 33) "let" 29 LET_KW@30..33 "let"
30 WHITESPACE@[33; 34) " " 30 WHITESPACE@33..34 " "
31 TUPLE_PAT@[34; 36) 31 TUPLE_PAT@34..36
32 L_PAREN@[34; 35) "(" 32 L_PAREN@34..35 "("
33 R_PAREN@[35; 36) ")" 33 R_PAREN@35..36 ")"
34 COLON@[36; 37) ":" 34 COLON@36..37 ":"
35 PATH_TYPE@[37; 40) 35 PATH_TYPE@37..40
36 PATH@[37; 40) 36 PATH@37..40
37 PATH_SEGMENT@[37; 40) 37 PATH_SEGMENT@37..40
38 COLON2@[37; 39) "::" 38 COLON2@37..39 "::"
39 NAME_REF@[39; 40) 39 NAME_REF@39..40
40 IDENT@[39; 40) "X" 40 IDENT@39..40 "X"
41 WHITESPACE@[40; 41) " " 41 WHITESPACE@40..41 " "
42 EQ@[41; 42) "=" 42 EQ@41..42 "="
43 WHITESPACE@[42; 43) " " 43 WHITESPACE@42..43 " "
44 TUPLE_EXPR@[43; 45) 44 TUPLE_EXPR@43..45
45 L_PAREN@[43; 44) "(" 45 L_PAREN@43..44 "("
46 R_PAREN@[44; 45) ")" 46 R_PAREN@44..45 ")"
47 SEMICOLON@[45; 46) ";" 47 SEMICOLON@45..46 ";"
48 WHITESPACE@[46; 47) "\n" 48 WHITESPACE@46..47 "\n"
49 R_CURLY@[47; 48) "}" 49 R_CURLY@47..48 "}"
50 WHITESPACE@[48; 49) "\n" 50 WHITESPACE@48..49 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.rast b/crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.rast
index 4a4ad84ca..6176a9620 100644
--- a/crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.rast
@@ -1,66 +1,66 @@
1SOURCE_FILE@[0; 71) 1SOURCE_FILE@0..71
2 FN_DEF@[0; 70) 2 FN_DEF@0..70
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 70) 11 BLOCK_EXPR@10..70
12 BLOCK@[10; 70) 12 BLOCK@10..70
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 IF_EXPR@[16; 68) 15 IF_EXPR@16..68
16 IF_KW@[16; 18) "if" 16 IF_KW@16..18 "if"
17 WHITESPACE@[18; 19) " " 17 WHITESPACE@18..19 " "
18 CONDITION@[19; 65) 18 CONDITION@19..65
19 BIN_EXPR@[19; 65) 19 BIN_EXPR@19..65
20 CAST_EXPR@[19; 40) 20 CAST_EXPR@19..40
21 METHOD_CALL_EXPR@[19; 33) 21 METHOD_CALL_EXPR@19..33
22 LITERAL@[19; 25) 22 LITERAL@19..25
23 FLOAT_NUMBER@[19; 25) "1.0f32" 23 FLOAT_NUMBER@19..25 "1.0f32"
24 DOT@[25; 26) "." 24 DOT@25..26 "."
25 NAME_REF@[26; 31) 25 NAME_REF@26..31
26 IDENT@[26; 31) "floor" 26 IDENT@26..31 "floor"
27 ARG_LIST@[31; 33) 27 ARG_LIST@31..33
28 L_PAREN@[31; 32) "(" 28 L_PAREN@31..32 "("
29 R_PAREN@[32; 33) ")" 29 R_PAREN@32..33 ")"
30 WHITESPACE@[33; 34) " " 30 WHITESPACE@33..34 " "
31 AS_KW@[34; 36) "as" 31 AS_KW@34..36 "as"
32 WHITESPACE@[36; 37) " " 32 WHITESPACE@36..37 " "
33 PATH_TYPE@[37; 40) 33 PATH_TYPE@37..40
34 PATH@[37; 40) 34 PATH@37..40
35 PATH_SEGMENT@[37; 40) 35 PATH_SEGMENT@37..40
36 NAME_REF@[37; 40) 36 NAME_REF@37..40
37 IDENT@[37; 40) "i64" 37 IDENT@37..40 "i64"
38 WHITESPACE@[40; 41) " " 38 WHITESPACE@40..41 " "
39 NEQ@[41; 43) "!=" 39 NEQ@41..43 "!="
40 WHITESPACE@[43; 44) " " 40 WHITESPACE@43..44 " "
41 CAST_EXPR@[44; 65) 41 CAST_EXPR@44..65
42 METHOD_CALL_EXPR@[44; 58) 42 METHOD_CALL_EXPR@44..58
43 LITERAL@[44; 50) 43 LITERAL@44..50
44 FLOAT_NUMBER@[44; 50) "1.0f32" 44 FLOAT_NUMBER@44..50 "1.0f32"
45 DOT@[50; 51) "." 45 DOT@50..51 "."
46 NAME_REF@[51; 56) 46 NAME_REF@51..56
47 IDENT@[51; 56) "floor" 47 IDENT@51..56 "floor"
48 ARG_LIST@[56; 58) 48 ARG_LIST@56..58
49 L_PAREN@[56; 57) "(" 49 L_PAREN@56..57 "("
50 R_PAREN@[57; 58) ")" 50 R_PAREN@57..58 ")"
51 WHITESPACE@[58; 59) " " 51 WHITESPACE@58..59 " "
52 AS_KW@[59; 61) "as" 52 AS_KW@59..61 "as"
53 WHITESPACE@[61; 62) " " 53 WHITESPACE@61..62 " "
54 PATH_TYPE@[62; 65) 54 PATH_TYPE@62..65
55 PATH@[62; 65) 55 PATH@62..65
56 PATH_SEGMENT@[62; 65) 56 PATH_SEGMENT@62..65
57 NAME_REF@[62; 65) 57 NAME_REF@62..65
58 IDENT@[62; 65) "i64" 58 IDENT@62..65 "i64"
59 WHITESPACE@[65; 66) " " 59 WHITESPACE@65..66 " "
60 BLOCK_EXPR@[66; 68) 60 BLOCK_EXPR@66..68
61 BLOCK@[66; 68) 61 BLOCK@66..68
62 L_CURLY@[66; 67) "{" 62 L_CURLY@66..67 "{"
63 R_CURLY@[67; 68) "}" 63 R_CURLY@67..68 "}"
64 WHITESPACE@[68; 69) "\n" 64 WHITESPACE@68..69 "\n"
65 R_CURLY@[69; 70) "}" 65 R_CURLY@69..70 "}"
66 WHITESPACE@[70; 71) "\n" 66 WHITESPACE@70..71 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0057_loop_in_call.rast b/crates/ra_syntax/test_data/parser/ok/0057_loop_in_call.rast
index 2c07bde43..342fe23f5 100644
--- a/crates/ra_syntax/test_data/parser/ok/0057_loop_in_call.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0057_loop_in_call.rast
@@ -1,59 +1,59 @@
1SOURCE_FILE@[0; 50) 1SOURCE_FILE@0..50
2 FN_DEF@[0; 17) 2 FN_DEF@0..17
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 14) 7 PARAM_LIST@6..14
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 PARAM@[7; 13) 9 PARAM@7..13
10 BIND_PAT@[7; 8) 10 BIND_PAT@7..8
11 NAME@[7; 8) 11 NAME@7..8
12 IDENT@[7; 8) "x" 12 IDENT@7..8 "x"
13 COLON@[8; 9) ":" 13 COLON@8..9 ":"
14 WHITESPACE@[9; 10) " " 14 WHITESPACE@9..10 " "
15 PATH_TYPE@[10; 13) 15 PATH_TYPE@10..13
16 PATH@[10; 13) 16 PATH@10..13
17 PATH_SEGMENT@[10; 13) 17 PATH_SEGMENT@10..13
18 NAME_REF@[10; 13) 18 NAME_REF@10..13
19 IDENT@[10; 13) "i32" 19 IDENT@10..13 "i32"
20 R_PAREN@[13; 14) ")" 20 R_PAREN@13..14 ")"
21 WHITESPACE@[14; 15) " " 21 WHITESPACE@14..15 " "
22 BLOCK_EXPR@[15; 17) 22 BLOCK_EXPR@15..17
23 BLOCK@[15; 17) 23 BLOCK@15..17
24 L_CURLY@[15; 16) "{" 24 L_CURLY@15..16 "{"
25 R_CURLY@[16; 17) "}" 25 R_CURLY@16..17 "}"
26 WHITESPACE@[17; 19) "\n\n" 26 WHITESPACE@17..19 "\n\n"
27 FN_DEF@[19; 50) 27 FN_DEF@19..50
28 FN_KW@[19; 21) "fn" 28 FN_KW@19..21 "fn"
29 WHITESPACE@[21; 22) " " 29 WHITESPACE@21..22 " "
30 NAME@[22; 26) 30 NAME@22..26
31 IDENT@[22; 26) "main" 31 IDENT@22..26 "main"
32 PARAM_LIST@[26; 28) 32 PARAM_LIST@26..28
33 L_PAREN@[26; 27) "(" 33 L_PAREN@26..27 "("
34 R_PAREN@[27; 28) ")" 34 R_PAREN@27..28 ")"
35 WHITESPACE@[28; 29) " " 35 WHITESPACE@28..29 " "
36 BLOCK_EXPR@[29; 50) 36 BLOCK_EXPR@29..50
37 BLOCK@[29; 50) 37 BLOCK@29..50
38 L_CURLY@[29; 30) "{" 38 L_CURLY@29..30 "{"
39 WHITESPACE@[30; 35) "\n " 39 WHITESPACE@30..35 "\n "
40 EXPR_STMT@[35; 48) 40 EXPR_STMT@35..48
41 CALL_EXPR@[35; 47) 41 CALL_EXPR@35..47
42 PATH_EXPR@[35; 38) 42 PATH_EXPR@35..38
43 PATH@[35; 38) 43 PATH@35..38
44 PATH_SEGMENT@[35; 38) 44 PATH_SEGMENT@35..38
45 NAME_REF@[35; 38) 45 NAME_REF@35..38
46 IDENT@[35; 38) "foo" 46 IDENT@35..38 "foo"
47 ARG_LIST@[38; 47) 47 ARG_LIST@38..47
48 L_PAREN@[38; 39) "(" 48 L_PAREN@38..39 "("
49 LOOP_EXPR@[39; 46) 49 LOOP_EXPR@39..46
50 LOOP_KW@[39; 43) "loop" 50 LOOP_KW@39..43 "loop"
51 WHITESPACE@[43; 44) " " 51 WHITESPACE@43..44 " "
52 BLOCK_EXPR@[44; 46) 52 BLOCK_EXPR@44..46
53 BLOCK@[44; 46) 53 BLOCK@44..46
54 L_CURLY@[44; 45) "{" 54 L_CURLY@44..45 "{"
55 R_CURLY@[45; 46) "}" 55 R_CURLY@45..46 "}"
56 R_PAREN@[46; 47) ")" 56 R_PAREN@46..47 ")"
57 SEMICOLON@[47; 48) ";" 57 SEMICOLON@47..48 ";"
58 WHITESPACE@[48; 49) "\n" 58 WHITESPACE@48..49 "\n"
59 R_CURLY@[49; 50) "}" 59 R_CURLY@49..50 "}"
diff --git a/crates/ra_syntax/test_data/parser/ok/0058_unary_expr_precedence.rast b/crates/ra_syntax/test_data/parser/ok/0058_unary_expr_precedence.rast
index 9de9efbad..360b6e044 100644
--- a/crates/ra_syntax/test_data/parser/ok/0058_unary_expr_precedence.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0058_unary_expr_precedence.rast
@@ -1,97 +1,97 @@
1SOURCE_FILE@[0; 79) 1SOURCE_FILE@0..79
2 FN_DEF@[0; 78) 2 FN_DEF@0..78
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 6) 5 NAME@3..6
6 IDENT@[3; 6) "foo" 6 IDENT@3..6 "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@6..8
8 L_PAREN@[6; 7) "(" 8 L_PAREN@6..7 "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@7..8 ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@8..9 " "
11 BLOCK_EXPR@[9; 78) 11 BLOCK_EXPR@9..78
12 BLOCK@[9; 78) 12 BLOCK@9..78
13 L_CURLY@[9; 10) "{" 13 L_CURLY@9..10 "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@10..15 "\n "
15 EXPR_STMT@[15; 27) 15 EXPR_STMT@15..27
16 BIN_EXPR@[15; 26) 16 BIN_EXPR@15..26
17 BIN_EXPR@[15; 22) 17 BIN_EXPR@15..22
18 LITERAL@[15; 16) 18 LITERAL@15..16
19 INT_NUMBER@[15; 16) "1" 19 INT_NUMBER@15..16 "1"
20 WHITESPACE@[16; 17) " " 20 WHITESPACE@16..17 " "
21 PLUS@[17; 18) "+" 21 PLUS@17..18 "+"
22 WHITESPACE@[18; 19) " " 22 WHITESPACE@18..19 " "
23 PREFIX_EXPR@[19; 22) 23 PREFIX_EXPR@19..22
24 STAR@[19; 20) "*" 24 STAR@19..20 "*"
25 REF_EXPR@[20; 22) 25 REF_EXPR@20..22
26 AMP@[20; 21) "&" 26 AMP@20..21 "&"
27 LITERAL@[21; 22) 27 LITERAL@21..22
28 INT_NUMBER@[21; 22) "2" 28 INT_NUMBER@21..22 "2"
29 WHITESPACE@[22; 23) " " 29 WHITESPACE@22..23 " "
30 PLUS@[23; 24) "+" 30 PLUS@23..24 "+"
31 WHITESPACE@[24; 25) " " 31 WHITESPACE@24..25 " "
32 LITERAL@[25; 26) 32 LITERAL@25..26
33 INT_NUMBER@[25; 26) "3" 33 INT_NUMBER@25..26 "3"
34 SEMICOLON@[26; 27) ";" 34 SEMICOLON@26..27 ";"
35 WHITESPACE@[27; 32) "\n " 35 WHITESPACE@27..32 "\n "
36 EXPR_STMT@[32; 43) 36 EXPR_STMT@32..43
37 CAST_EXPR@[32; 42) 37 CAST_EXPR@32..42
38 PREFIX_EXPR@[32; 35) 38 PREFIX_EXPR@32..35
39 STAR@[32; 33) "*" 39 STAR@32..33 "*"
40 REF_EXPR@[33; 35) 40 REF_EXPR@33..35
41 AMP@[33; 34) "&" 41 AMP@33..34 "&"
42 LITERAL@[34; 35) 42 LITERAL@34..35
43 INT_NUMBER@[34; 35) "1" 43 INT_NUMBER@34..35 "1"
44 WHITESPACE@[35; 36) " " 44 WHITESPACE@35..36 " "
45 AS_KW@[36; 38) "as" 45 AS_KW@36..38 "as"
46 WHITESPACE@[38; 39) " " 46 WHITESPACE@38..39 " "
47 PATH_TYPE@[39; 42) 47 PATH_TYPE@39..42
48 PATH@[39; 42) 48 PATH@39..42
49 PATH_SEGMENT@[39; 42) 49 PATH_SEGMENT@39..42
50 NAME_REF@[39; 42) 50 NAME_REF@39..42
51 IDENT@[39; 42) "u64" 51 IDENT@39..42 "u64"
52 SEMICOLON@[42; 43) ";" 52 SEMICOLON@42..43 ";"
53 WHITESPACE@[43; 48) "\n " 53 WHITESPACE@43..48 "\n "
54 EXPR_STMT@[48; 54) 54 EXPR_STMT@48..54
55 PREFIX_EXPR@[48; 53) 55 PREFIX_EXPR@48..53
56 STAR@[48; 49) "*" 56 STAR@48..49 "*"
57 CALL_EXPR@[49; 53) 57 CALL_EXPR@49..53
58 PATH_EXPR@[49; 50) 58 PATH_EXPR@49..50
59 PATH@[49; 50) 59 PATH@49..50
60 PATH_SEGMENT@[49; 50) 60 PATH_SEGMENT@49..50
61 NAME_REF@[49; 50) 61 NAME_REF@49..50
62 IDENT@[49; 50) "x" 62 IDENT@49..50 "x"
63 ARG_LIST@[50; 53) 63 ARG_LIST@50..53
64 L_PAREN@[50; 51) "(" 64 L_PAREN@50..51 "("
65 LITERAL@[51; 52) 65 LITERAL@51..52
66 INT_NUMBER@[51; 52) "1" 66 INT_NUMBER@51..52 "1"
67 R_PAREN@[52; 53) ")" 67 R_PAREN@52..53 ")"
68 SEMICOLON@[53; 54) ";" 68 SEMICOLON@53..54 ";"
69 WHITESPACE@[54; 59) "\n " 69 WHITESPACE@54..59 "\n "
70 EXPR_STMT@[59; 65) 70 EXPR_STMT@59..65
71 REF_EXPR@[59; 64) 71 REF_EXPR@59..64
72 AMP@[59; 60) "&" 72 AMP@59..60 "&"
73 INDEX_EXPR@[60; 64) 73 INDEX_EXPR@60..64
74 PATH_EXPR@[60; 61) 74 PATH_EXPR@60..61
75 PATH@[60; 61) 75 PATH@60..61
76 PATH_SEGMENT@[60; 61) 76 PATH_SEGMENT@60..61
77 NAME_REF@[60; 61) 77 NAME_REF@60..61
78 IDENT@[60; 61) "x" 78 IDENT@60..61 "x"
79 L_BRACK@[61; 62) "[" 79 L_BRACK@61..62 "["
80 LITERAL@[62; 63) 80 LITERAL@62..63
81 INT_NUMBER@[62; 63) "1" 81 INT_NUMBER@62..63 "1"
82 R_BRACK@[63; 64) "]" 82 R_BRACK@63..64 "]"
83 SEMICOLON@[64; 65) ";" 83 SEMICOLON@64..65 ";"
84 WHITESPACE@[65; 70) "\n " 84 WHITESPACE@65..70 "\n "
85 EXPR_STMT@[70; 76) 85 EXPR_STMT@70..76
86 RANGE_EXPR@[70; 75) 86 RANGE_EXPR@70..75
87 PREFIX_EXPR@[70; 72) 87 PREFIX_EXPR@70..72
88 MINUS@[70; 71) "-" 88 MINUS@70..71 "-"
89 LITERAL@[71; 72) 89 LITERAL@71..72
90 INT_NUMBER@[71; 72) "1" 90 INT_NUMBER@71..72 "1"
91 DOT2@[72; 74) ".." 91 DOT2@72..74 ".."
92 LITERAL@[74; 75) 92 LITERAL@74..75
93 INT_NUMBER@[74; 75) "2" 93 INT_NUMBER@74..75 "2"
94 SEMICOLON@[75; 76) ";" 94 SEMICOLON@75..76 ";"
95 WHITESPACE@[76; 77) "\n" 95 WHITESPACE@76..77 "\n"
96 R_CURLY@[77; 78) "}" 96 R_CURLY@77..78 "}"
97 WHITESPACE@[78; 79) "\n" 97 WHITESPACE@78..79 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0059_loops_in_parens.rast b/crates/ra_syntax/test_data/parser/ok/0059_loops_in_parens.rast
index 101478ce1..225b1d0b6 100644
--- a/crates/ra_syntax/test_data/parser/ok/0059_loops_in_parens.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0059_loops_in_parens.rast
@@ -1,101 +1,101 @@
1SOURCE_FILE@[0; 105) 1SOURCE_FILE@0..105
2 FN_DEF@[0; 104) 2 FN_DEF@0..104
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 104) 11 BLOCK_EXPR@10..104
12 BLOCK@[10; 104) 12 BLOCK@10..104
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 EXPR_STMT@[16; 50) 15 EXPR_STMT@16..50
16 CALL_EXPR@[16; 49) 16 CALL_EXPR@16..49
17 PATH_EXPR@[16; 20) 17 PATH_EXPR@16..20
18 PATH@[16; 20) 18 PATH@16..20
19 PATH_SEGMENT@[16; 20) 19 PATH_SEGMENT@16..20
20 NAME_REF@[16; 20) 20 NAME_REF@16..20
21 IDENT@[16; 20) "Some" 21 IDENT@16..20 "Some"
22 ARG_LIST@[20; 49) 22 ARG_LIST@20..49
23 L_PAREN@[20; 21) "(" 23 L_PAREN@20..21 "("
24 FOR_EXPR@[21; 48) 24 FOR_EXPR@21..48
25 FOR_KW@[21; 24) "for" 25 FOR_KW@21..24 "for"
26 WHITESPACE@[24; 25) " " 26 WHITESPACE@24..25 " "
27 PLACEHOLDER_PAT@[25; 26) 27 PLACEHOLDER_PAT@25..26
28 UNDERSCORE@[25; 26) "_" 28 UNDERSCORE@25..26 "_"
29 WHITESPACE@[26; 27) " " 29 WHITESPACE@26..27 " "
30 IN_KW@[27; 29) "in" 30 IN_KW@27..29 "in"
31 WHITESPACE@[29; 30) " " 31 WHITESPACE@29..30 " "
32 METHOD_CALL_EXPR@[30; 45) 32 METHOD_CALL_EXPR@30..45
33 ARRAY_EXPR@[30; 33) 33 ARRAY_EXPR@30..33
34 L_BRACK@[30; 31) "[" 34 L_BRACK@30..31 "["
35 LITERAL@[31; 32) 35 LITERAL@31..32
36 INT_NUMBER@[31; 32) "1" 36 INT_NUMBER@31..32 "1"
37 R_BRACK@[32; 33) "]" 37 R_BRACK@32..33 "]"
38 DOT@[33; 34) "." 38 DOT@33..34 "."
39 NAME_REF@[34; 43) 39 NAME_REF@34..43
40 IDENT@[34; 43) "into_iter" 40 IDENT@34..43 "into_iter"
41 ARG_LIST@[43; 45) 41 ARG_LIST@43..45
42 L_PAREN@[43; 44) "(" 42 L_PAREN@43..44 "("
43 R_PAREN@[44; 45) ")" 43 R_PAREN@44..45 ")"
44 WHITESPACE@[45; 46) " " 44 WHITESPACE@45..46 " "
45 BLOCK_EXPR@[46; 48) 45 BLOCK_EXPR@46..48
46 BLOCK@[46; 48) 46 BLOCK@46..48
47 L_CURLY@[46; 47) "{" 47 L_CURLY@46..47 "{"
48 R_CURLY@[47; 48) "}" 48 R_CURLY@47..48 "}"
49 R_PAREN@[48; 49) ")" 49 R_PAREN@48..49 ")"
50 SEMICOLON@[49; 50) ";" 50 SEMICOLON@49..50 ";"
51 WHITESPACE@[50; 55) "\n " 51 WHITESPACE@50..55 "\n "
52 EXPR_STMT@[55; 77) 52 EXPR_STMT@55..77
53 CALL_EXPR@[55; 76) 53 CALL_EXPR@55..76
54 PATH_EXPR@[55; 59) 54 PATH_EXPR@55..59
55 PATH@[55; 59) 55 PATH@55..59
56 PATH_SEGMENT@[55; 59) 56 PATH_SEGMENT@55..59
57 NAME_REF@[55; 59) 57 NAME_REF@55..59
58 IDENT@[55; 59) "Some" 58 IDENT@55..59 "Some"
59 ARG_LIST@[59; 76) 59 ARG_LIST@59..76
60 L_PAREN@[59; 60) "(" 60 L_PAREN@59..60 "("
61 LOOP_EXPR@[60; 75) 61 LOOP_EXPR@60..75
62 LOOP_KW@[60; 64) "loop" 62 LOOP_KW@60..64 "loop"
63 WHITESPACE@[64; 65) " " 63 WHITESPACE@64..65 " "
64 BLOCK_EXPR@[65; 75) 64 BLOCK_EXPR@65..75
65 BLOCK@[65; 75) 65 BLOCK@65..75
66 L_CURLY@[65; 66) "{" 66 L_CURLY@65..66 "{"
67 WHITESPACE@[66; 67) " " 67 WHITESPACE@66..67 " "
68 EXPR_STMT@[67; 73) 68 EXPR_STMT@67..73
69 BREAK_EXPR@[67; 72) 69 BREAK_EXPR@67..72
70 BREAK_KW@[67; 72) "break" 70 BREAK_KW@67..72 "break"
71 SEMICOLON@[72; 73) ";" 71 SEMICOLON@72..73 ";"
72 WHITESPACE@[73; 74) " " 72 WHITESPACE@73..74 " "
73 R_CURLY@[74; 75) "}" 73 R_CURLY@74..75 "}"
74 R_PAREN@[75; 76) ")" 74 R_PAREN@75..76 ")"
75 SEMICOLON@[76; 77) ";" 75 SEMICOLON@76..77 ";"
76 WHITESPACE@[77; 82) "\n " 76 WHITESPACE@77..82 "\n "
77 EXPR_STMT@[82; 102) 77 EXPR_STMT@82..102
78 CALL_EXPR@[82; 101) 78 CALL_EXPR@82..101
79 PATH_EXPR@[82; 86) 79 PATH_EXPR@82..86
80 PATH@[82; 86) 80 PATH@82..86
81 PATH_SEGMENT@[82; 86) 81 PATH_SEGMENT@82..86
82 NAME_REF@[82; 86) 82 NAME_REF@82..86
83 IDENT@[82; 86) "Some" 83 IDENT@82..86 "Some"
84 ARG_LIST@[86; 101) 84 ARG_LIST@86..101
85 L_PAREN@[86; 87) "(" 85 L_PAREN@86..87 "("
86 WHILE_EXPR@[87; 100) 86 WHILE_EXPR@87..100
87 WHILE_KW@[87; 92) "while" 87 WHILE_KW@87..92 "while"
88 WHITESPACE@[92; 93) " " 88 WHITESPACE@92..93 " "
89 CONDITION@[93; 97) 89 CONDITION@93..97
90 LITERAL@[93; 97) 90 LITERAL@93..97
91 TRUE_KW@[93; 97) "true" 91 TRUE_KW@93..97 "true"
92 WHITESPACE@[97; 98) " " 92 WHITESPACE@97..98 " "
93 BLOCK_EXPR@[98; 100) 93 BLOCK_EXPR@98..100
94 BLOCK@[98; 100) 94 BLOCK@98..100
95 L_CURLY@[98; 99) "{" 95 L_CURLY@98..99 "{"
96 R_CURLY@[99; 100) "}" 96 R_CURLY@99..100 "}"
97 R_PAREN@[100; 101) ")" 97 R_PAREN@100..101 ")"
98 SEMICOLON@[101; 102) ";" 98 SEMICOLON@101..102 ";"
99 WHITESPACE@[102; 103) "\n" 99 WHITESPACE@102..103 "\n"
100 R_CURLY@[103; 104) "}" 100 R_CURLY@103..104 "}"
101 WHITESPACE@[104; 105) "\n" 101 WHITESPACE@104..105 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0060_as_range.rast b/crates/ra_syntax/test_data/parser/ok/0060_as_range.rast
index 6bff57505..a52a08ed0 100644
--- a/crates/ra_syntax/test_data/parser/ok/0060_as_range.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0060_as_range.rast
@@ -1,56 +1,56 @@
1SOURCE_FILE@[0; 56) 1SOURCE_FILE@0..56
2 FN_DEF@[0; 55) 2 FN_DEF@0..55
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 55) 11 BLOCK_EXPR@10..55
12 BLOCK@[10; 55) 12 BLOCK@10..55
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 EXPR_STMT@[16; 30) 15 EXPR_STMT@16..30
16 RANGE_EXPR@[16; 29) 16 RANGE_EXPR@16..29
17 CAST_EXPR@[16; 26) 17 CAST_EXPR@16..26
18 LITERAL@[16; 17) 18 LITERAL@16..17
19 INT_NUMBER@[16; 17) "0" 19 INT_NUMBER@16..17 "0"
20 WHITESPACE@[17; 18) " " 20 WHITESPACE@17..18 " "
21 AS_KW@[18; 20) "as" 21 AS_KW@18..20 "as"
22 WHITESPACE@[20; 21) " " 22 WHITESPACE@20..21 " "
23 PATH_TYPE@[21; 26) 23 PATH_TYPE@21..26
24 PATH@[21; 26) 24 PATH@21..26
25 PATH_SEGMENT@[21; 26) 25 PATH_SEGMENT@21..26
26 NAME_REF@[21; 26) 26 NAME_REF@21..26
27 IDENT@[21; 26) "usize" 27 IDENT@21..26 "usize"
28 WHITESPACE@[26; 27) " " 28 WHITESPACE@26..27 " "
29 DOT2@[27; 29) ".." 29 DOT2@27..29 ".."
30 SEMICOLON@[29; 30) ";" 30 SEMICOLON@29..30 ";"
31 WHITESPACE@[30; 35) "\n " 31 WHITESPACE@30..35 "\n "
32 EXPR_STMT@[35; 53) 32 EXPR_STMT@35..53
33 RANGE_EXPR@[35; 52) 33 RANGE_EXPR@35..52
34 BIN_EXPR@[35; 49) 34 BIN_EXPR@35..49
35 LITERAL@[35; 36) 35 LITERAL@35..36
36 INT_NUMBER@[35; 36) "1" 36 INT_NUMBER@35..36 "1"
37 WHITESPACE@[36; 37) " " 37 WHITESPACE@36..37 " "
38 PLUS@[37; 38) "+" 38 PLUS@37..38 "+"
39 WHITESPACE@[38; 39) " " 39 WHITESPACE@38..39 " "
40 CAST_EXPR@[39; 49) 40 CAST_EXPR@39..49
41 LITERAL@[39; 40) 41 LITERAL@39..40
42 INT_NUMBER@[39; 40) "2" 42 INT_NUMBER@39..40 "2"
43 WHITESPACE@[40; 41) " " 43 WHITESPACE@40..41 " "
44 AS_KW@[41; 43) "as" 44 AS_KW@41..43 "as"
45 WHITESPACE@[43; 44) " " 45 WHITESPACE@43..44 " "
46 PATH_TYPE@[44; 49) 46 PATH_TYPE@44..49
47 PATH@[44; 49) 47 PATH@44..49
48 PATH_SEGMENT@[44; 49) 48 PATH_SEGMENT@44..49
49 NAME_REF@[44; 49) 49 NAME_REF@44..49
50 IDENT@[44; 49) "usize" 50 IDENT@44..49 "usize"
51 WHITESPACE@[49; 50) " " 51 WHITESPACE@49..50 " "
52 DOT2@[50; 52) ".." 52 DOT2@50..52 ".."
53 SEMICOLON@[52; 53) ";" 53 SEMICOLON@52..53 ";"
54 WHITESPACE@[53; 54) "\n" 54 WHITESPACE@53..54 "\n"
55 R_CURLY@[54; 55) "}" 55 R_CURLY@54..55 "}"
56 WHITESPACE@[55; 56) "\n" 56 WHITESPACE@55..56 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0061_match_full_range.rast b/crates/ra_syntax/test_data/parser/ok/0061_match_full_range.rast
index be6774199..b8974c942 100644
--- a/crates/ra_syntax/test_data/parser/ok/0061_match_full_range.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0061_match_full_range.rast
@@ -1,27 +1,27 @@
1SOURCE_FILE@[0; 35) 1SOURCE_FILE@0..35
2 FN_DEF@[0; 34) 2 FN_DEF@0..34
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 7) 5 NAME@3..7
6 IDENT@[3; 7) "main" 6 IDENT@3..7 "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@7..9
8 L_PAREN@[7; 8) "(" 8 L_PAREN@7..8 "("
9 R_PAREN@[8; 9) ")" 9 R_PAREN@8..9 ")"
10 WHITESPACE@[9; 10) " " 10 WHITESPACE@9..10 " "
11 BLOCK_EXPR@[10; 34) 11 BLOCK_EXPR@10..34
12 BLOCK@[10; 34) 12 BLOCK@10..34
13 L_CURLY@[10; 11) "{" 13 L_CURLY@10..11 "{"
14 WHITESPACE@[11; 16) "\n " 14 WHITESPACE@11..16 "\n "
15 MATCH_EXPR@[16; 32) 15 MATCH_EXPR@16..32
16 MATCH_KW@[16; 21) "match" 16 MATCH_KW@16..21 "match"
17 WHITESPACE@[21; 22) " " 17 WHITESPACE@21..22 " "
18 RANGE_EXPR@[22; 24) 18 RANGE_EXPR@22..24
19 DOT2@[22; 24) ".." 19 DOT2@22..24 ".."
20 WHITESPACE@[24; 25) " " 20 WHITESPACE@24..25 " "
21 MATCH_ARM_LIST@[25; 32) 21 MATCH_ARM_LIST@25..32
22 L_CURLY@[25; 26) "{" 22 L_CURLY@25..26 "{"
23 WHITESPACE@[26; 31) "\n " 23 WHITESPACE@26..31 "\n "
24 R_CURLY@[31; 32) "}" 24 R_CURLY@31..32 "}"
25 WHITESPACE@[32; 33) "\n" 25 WHITESPACE@32..33 "\n"
26 R_CURLY@[33; 34) "}" 26 R_CURLY@33..34 "}"
27 WHITESPACE@[34; 35) "\n" 27 WHITESPACE@34..35 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0062_macro_2.0.rast b/crates/ra_syntax/test_data/parser/ok/0062_macro_2.0.rast
index f89d7c0d9..46f370eec 100644
--- a/crates/ra_syntax/test_data/parser/ok/0062_macro_2.0.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0062_macro_2.0.rast
@@ -1,176 +1,176 @@
1SOURCE_FILE@[0; 349) 1SOURCE_FILE@0..349
2 MACRO_DEF@[0; 93) 2 MACRO_DEF@0..93
3 MACRO_KW@[0; 5) "macro" 3 MACRO_KW@0..5 "macro"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 NAME@[6; 21) 5 NAME@6..21
6 IDENT@[6; 21) "parse_use_trees" 6 IDENT@6..21 "parse_use_trees"
7 TOKEN_TREE@[21; 93) 7 TOKEN_TREE@21..93
8 TOKEN_TREE@[21; 41) 8 TOKEN_TREE@21..41
9 L_PAREN@[21; 22) "(" 9 L_PAREN@21..22 "("
10 DOLLAR@[22; 23) "$" 10 DOLLAR@22..23 "$"
11 TOKEN_TREE@[23; 32) 11 TOKEN_TREE@23..32
12 L_PAREN@[23; 24) "(" 12 L_PAREN@23..24 "("
13 DOLLAR@[24; 25) "$" 13 DOLLAR@24..25 "$"
14 IDENT@[25; 26) "s" 14 IDENT@25..26 "s"
15 COLON@[26; 27) ":" 15 COLON@26..27 ":"
16 IDENT@[27; 31) "expr" 16 IDENT@27..31 "expr"
17 R_PAREN@[31; 32) ")" 17 R_PAREN@31..32 ")"
18 COMMA@[32; 33) "," 18 COMMA@32..33 ","
19 STAR@[33; 34) "*" 19 STAR@33..34 "*"
20 WHITESPACE@[34; 35) " " 20 WHITESPACE@34..35 " "
21 DOLLAR@[35; 36) "$" 21 DOLLAR@35..36 "$"
22 TOKEN_TREE@[36; 39) 22 TOKEN_TREE@36..39
23 L_PAREN@[36; 37) "(" 23 L_PAREN@36..37 "("
24 COMMA@[37; 38) "," 24 COMMA@37..38 ","
25 R_PAREN@[38; 39) ")" 25 R_PAREN@38..39 ")"
26 STAR@[39; 40) "*" 26 STAR@39..40 "*"
27 R_PAREN@[40; 41) ")" 27 R_PAREN@40..41 ")"
28 WHITESPACE@[41; 42) " " 28 WHITESPACE@41..42 " "
29 TOKEN_TREE@[42; 93) 29 TOKEN_TREE@42..93
30 L_CURLY@[42; 43) "{" 30 L_CURLY@42..43 "{"
31 WHITESPACE@[43; 48) "\n " 31 WHITESPACE@43..48 "\n "
32 IDENT@[48; 51) "vec" 32 IDENT@48..51 "vec"
33 BANG@[51; 52) "!" 33 BANG@51..52 "!"
34 TOKEN_TREE@[52; 91) 34 TOKEN_TREE@52..91
35 L_BRACK@[52; 53) "[" 35 L_BRACK@52..53 "["
36 WHITESPACE@[53; 62) "\n " 36 WHITESPACE@53..62 "\n "
37 DOLLAR@[62; 63) "$" 37 DOLLAR@62..63 "$"
38 TOKEN_TREE@[63; 84) 38 TOKEN_TREE@63..84
39 L_PAREN@[63; 64) "(" 39 L_PAREN@63..64 "("
40 IDENT@[64; 78) "parse_use_tree" 40 IDENT@64..78 "parse_use_tree"
41 TOKEN_TREE@[78; 82) 41 TOKEN_TREE@78..82
42 L_PAREN@[78; 79) "(" 42 L_PAREN@78..79 "("
43 DOLLAR@[79; 80) "$" 43 DOLLAR@79..80 "$"
44 IDENT@[80; 81) "s" 44 IDENT@80..81 "s"
45 R_PAREN@[81; 82) ")" 45 R_PAREN@81..82 ")"
46 COMMA@[82; 83) "," 46 COMMA@82..83 ","
47 R_PAREN@[83; 84) ")" 47 R_PAREN@83..84 ")"
48 STAR@[84; 85) "*" 48 STAR@84..85 "*"
49 WHITESPACE@[85; 90) "\n " 49 WHITESPACE@85..90 "\n "
50 R_BRACK@[90; 91) "]" 50 R_BRACK@90..91 "]"
51 WHITESPACE@[91; 92) "\n" 51 WHITESPACE@91..92 "\n"
52 R_CURLY@[92; 93) "}" 52 R_CURLY@92..93 "}"
53 WHITESPACE@[93; 95) "\n\n" 53 WHITESPACE@93..95 "\n\n"
54 FN_DEF@[95; 348) 54 FN_DEF@95..348
55 ATTR@[95; 102) 55 ATTR@95..102
56 POUND@[95; 96) "#" 56 POUND@95..96 "#"
57 L_BRACK@[96; 97) "[" 57 L_BRACK@96..97 "["
58 PATH@[97; 101) 58 PATH@97..101
59 PATH_SEGMENT@[97; 101) 59 PATH_SEGMENT@97..101
60 NAME_REF@[97; 101) 60 NAME_REF@97..101
61 IDENT@[97; 101) "test" 61 IDENT@97..101 "test"
62 R_BRACK@[101; 102) "]" 62 R_BRACK@101..102 "]"
63 WHITESPACE@[102; 103) "\n" 63 WHITESPACE@102..103 "\n"
64 FN_KW@[103; 105) "fn" 64 FN_KW@103..105 "fn"
65 WHITESPACE@[105; 106) " " 65 WHITESPACE@105..106 " "
66 NAME@[106; 125) 66 NAME@106..125
67 IDENT@[106; 125) "test_use_tree_merge" 67 IDENT@106..125 "test_use_tree_merge"
68 PARAM_LIST@[125; 127) 68 PARAM_LIST@125..127
69 L_PAREN@[125; 126) "(" 69 L_PAREN@125..126 "("
70 R_PAREN@[126; 127) ")" 70 R_PAREN@126..127 ")"
71 WHITESPACE@[127; 128) " " 71 WHITESPACE@127..128 " "
72 BLOCK_EXPR@[128; 348) 72 BLOCK_EXPR@128..348
73 BLOCK@[128; 348) 73 BLOCK@128..348
74 L_CURLY@[128; 129) "{" 74 L_CURLY@128..129 "{"
75 WHITESPACE@[129; 134) "\n " 75 WHITESPACE@129..134 "\n "
76 MACRO_DEF@[134; 346) 76 MACRO_DEF@134..346
77 MACRO_KW@[134; 139) "macro" 77 MACRO_KW@134..139 "macro"
78 WHITESPACE@[139; 140) " " 78 WHITESPACE@139..140 " "
79 NAME@[140; 150) 79 NAME@140..150
80 IDENT@[140; 150) "test_merge" 80 IDENT@140..150 "test_merge"
81 TOKEN_TREE@[150; 346) 81 TOKEN_TREE@150..346
82 TOKEN_TREE@[150; 203) 82 TOKEN_TREE@150..203
83 L_PAREN@[150; 151) "(" 83 L_PAREN@150..151 "("
84 TOKEN_TREE@[151; 175) 84 TOKEN_TREE@151..175
85 L_BRACK@[151; 152) "[" 85 L_BRACK@151..152 "["
86 DOLLAR@[152; 153) "$" 86 DOLLAR@152..153 "$"
87 TOKEN_TREE@[153; 166) 87 TOKEN_TREE@153..166
88 L_PAREN@[153; 154) "(" 88 L_PAREN@153..154 "("
89 DOLLAR@[154; 155) "$" 89 DOLLAR@154..155 "$"
90 IDENT@[155; 160) "input" 90 IDENT@155..160 "input"
91 COLON@[160; 161) ":" 91 COLON@160..161 ":"
92 IDENT@[161; 165) "expr" 92 IDENT@161..165 "expr"
93 R_PAREN@[165; 166) ")" 93 R_PAREN@165..166 ")"
94 COMMA@[166; 167) "," 94 COMMA@166..167 ","
95 STAR@[167; 168) "*" 95 STAR@167..168 "*"
96 WHITESPACE@[168; 169) " " 96 WHITESPACE@168..169 " "
97 DOLLAR@[169; 170) "$" 97 DOLLAR@169..170 "$"
98 TOKEN_TREE@[170; 173) 98 TOKEN_TREE@170..173
99 L_PAREN@[170; 171) "(" 99 L_PAREN@170..171 "("
100 COMMA@[171; 172) "," 100 COMMA@171..172 ","
101 R_PAREN@[172; 173) ")" 101 R_PAREN@172..173 ")"
102 STAR@[173; 174) "*" 102 STAR@173..174 "*"
103 R_BRACK@[174; 175) "]" 103 R_BRACK@174..175 "]"
104 COMMA@[175; 176) "," 104 COMMA@175..176 ","
105 WHITESPACE@[176; 177) " " 105 WHITESPACE@176..177 " "
106 TOKEN_TREE@[177; 202) 106 TOKEN_TREE@177..202
107 L_BRACK@[177; 178) "[" 107 L_BRACK@177..178 "["
108 DOLLAR@[178; 179) "$" 108 DOLLAR@178..179 "$"
109 TOKEN_TREE@[179; 193) 109 TOKEN_TREE@179..193
110 L_PAREN@[179; 180) "(" 110 L_PAREN@179..180 "("
111 DOLLAR@[180; 181) "$" 111 DOLLAR@180..181 "$"
112 IDENT@[181; 187) "output" 112 IDENT@181..187 "output"
113 COLON@[187; 188) ":" 113 COLON@187..188 ":"
114 IDENT@[188; 192) "expr" 114 IDENT@188..192 "expr"
115 R_PAREN@[192; 193) ")" 115 R_PAREN@192..193 ")"
116 COMMA@[193; 194) "," 116 COMMA@193..194 ","
117 STAR@[194; 195) "*" 117 STAR@194..195 "*"
118 WHITESPACE@[195; 196) " " 118 WHITESPACE@195..196 " "
119 DOLLAR@[196; 197) "$" 119 DOLLAR@196..197 "$"
120 TOKEN_TREE@[197; 200) 120 TOKEN_TREE@197..200
121 L_PAREN@[197; 198) "(" 121 L_PAREN@197..198 "("
122 COMMA@[198; 199) "," 122 COMMA@198..199 ","
123 R_PAREN@[199; 200) ")" 123 R_PAREN@199..200 ")"
124 STAR@[200; 201) "*" 124 STAR@200..201 "*"
125 R_BRACK@[201; 202) "]" 125 R_BRACK@201..202 "]"
126 R_PAREN@[202; 203) ")" 126 R_PAREN@202..203 ")"
127 WHITESPACE@[203; 204) " " 127 WHITESPACE@203..204 " "
128 TOKEN_TREE@[204; 346) 128 TOKEN_TREE@204..346
129 L_CURLY@[204; 205) "{" 129 L_CURLY@204..205 "{"
130 WHITESPACE@[205; 214) "\n " 130 WHITESPACE@205..214 "\n "
131 IDENT@[214; 223) "assert_eq" 131 IDENT@214..223 "assert_eq"
132 BANG@[223; 224) "!" 132 BANG@223..224 "!"
133 TOKEN_TREE@[224; 339) 133 TOKEN_TREE@224..339
134 L_PAREN@[224; 225) "(" 134 L_PAREN@224..225 "("
135 WHITESPACE@[225; 238) "\n " 135 WHITESPACE@225..238 "\n "
136 IDENT@[238; 253) "merge_use_trees" 136 IDENT@238..253 "merge_use_trees"
137 TOKEN_TREE@[253; 284) 137 TOKEN_TREE@253..284
138 L_PAREN@[253; 254) "(" 138 L_PAREN@253..254 "("
139 IDENT@[254; 269) "parse_use_trees" 139 IDENT@254..269 "parse_use_trees"
140 BANG@[269; 270) "!" 140 BANG@269..270 "!"
141 TOKEN_TREE@[270; 283) 141 TOKEN_TREE@270..283
142 L_PAREN@[270; 271) "(" 142 L_PAREN@270..271 "("
143 DOLLAR@[271; 272) "$" 143 DOLLAR@271..272 "$"
144 TOKEN_TREE@[272; 281) 144 TOKEN_TREE@272..281
145 L_PAREN@[272; 273) "(" 145 L_PAREN@272..273 "("
146 DOLLAR@[273; 274) "$" 146 DOLLAR@273..274 "$"
147 IDENT@[274; 279) "input" 147 IDENT@274..279 "input"
148 COMMA@[279; 280) "," 148 COMMA@279..280 ","
149 R_PAREN@[280; 281) ")" 149 R_PAREN@280..281 ")"
150 STAR@[281; 282) "*" 150 STAR@281..282 "*"
151 R_PAREN@[282; 283) ")" 151 R_PAREN@282..283 ")"
152 R_PAREN@[283; 284) ")" 152 R_PAREN@283..284 ")"
153 COMMA@[284; 285) "," 153 COMMA@284..285 ","
154 WHITESPACE@[285; 298) "\n " 154 WHITESPACE@285..298 "\n "
155 IDENT@[298; 313) "parse_use_trees" 155 IDENT@298..313 "parse_use_trees"
156 BANG@[313; 314) "!" 156 BANG@313..314 "!"
157 TOKEN_TREE@[314; 328) 157 TOKEN_TREE@314..328
158 L_PAREN@[314; 315) "(" 158 L_PAREN@314..315 "("
159 DOLLAR@[315; 316) "$" 159 DOLLAR@315..316 "$"
160 TOKEN_TREE@[316; 326) 160 TOKEN_TREE@316..326
161 L_PAREN@[316; 317) "(" 161 L_PAREN@316..317 "("
162 DOLLAR@[317; 318) "$" 162 DOLLAR@317..318 "$"
163 IDENT@[318; 324) "output" 163 IDENT@318..324 "output"
164 COMMA@[324; 325) "," 164 COMMA@324..325 ","
165 R_PAREN@[325; 326) ")" 165 R_PAREN@325..326 ")"
166 STAR@[326; 327) "*" 166 STAR@326..327 "*"
167 R_PAREN@[327; 328) ")" 167 R_PAREN@327..328 ")"
168 COMMA@[328; 329) "," 168 COMMA@328..329 ","
169 WHITESPACE@[329; 338) "\n " 169 WHITESPACE@329..338 "\n "
170 R_PAREN@[338; 339) ")" 170 R_PAREN@338..339 ")"
171 SEMICOLON@[339; 340) ";" 171 SEMICOLON@339..340 ";"
172 WHITESPACE@[340; 345) "\n " 172 WHITESPACE@340..345 "\n "
173 R_CURLY@[345; 346) "}" 173 R_CURLY@345..346 "}"
174 WHITESPACE@[346; 347) "\n" 174 WHITESPACE@346..347 "\n"
175 R_CURLY@[347; 348) "}" 175 R_CURLY@347..348 "}"
176 WHITESPACE@[348; 349) "\n" 176 WHITESPACE@348..349 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.rast b/crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.rast
index d0623ba90..1cd77aa14 100644
--- a/crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.rast
@@ -1,198 +1,198 @@
1SOURCE_FILE@[0; 170) 1SOURCE_FILE@0..170
2 TRAIT_DEF@[0; 169) 2 TRAIT_DEF@0..169
3 TRAIT_KW@[0; 5) "trait" 3 TRAIT_KW@0..5 "trait"
4 WHITESPACE@[5; 6) " " 4 WHITESPACE@5..6 " "
5 NAME@[6; 7) 5 NAME@6..7
6 IDENT@[6; 7) "T" 6 IDENT@6..7 "T"
7 WHITESPACE@[7; 8) " " 7 WHITESPACE@7..8 " "
8 ITEM_LIST@[8; 169) 8 ITEM_LIST@8..169
9 L_CURLY@[8; 9) "{" 9 L_CURLY@8..9 "{"
10 WHITESPACE@[9; 14) "\n " 10 WHITESPACE@9..14 "\n "
11 FN_DEF@[14; 46) 11 FN_DEF@14..46
12 FN_KW@[14; 16) "fn" 12 FN_KW@14..16 "fn"
13 WHITESPACE@[16; 17) " " 13 WHITESPACE@16..17 " "
14 NAME@[17; 19) 14 NAME@17..19
15 IDENT@[17; 19) "f1" 15 IDENT@17..19 "f1"
16 PARAM_LIST@[19; 43) 16 PARAM_LIST@19..43
17 L_PAREN@[19; 20) "(" 17 L_PAREN@19..20 "("
18 PARAM@[20; 42) 18 PARAM@20..42
19 TUPLE_PAT@[20; 26) 19 TUPLE_PAT@20..26
20 L_PAREN@[20; 21) "(" 20 L_PAREN@20..21 "("
21 BIND_PAT@[21; 22) 21 BIND_PAT@21..22
22 NAME@[21; 22) 22 NAME@21..22
23 IDENT@[21; 22) "a" 23 IDENT@21..22 "a"
24 COMMA@[22; 23) "," 24 COMMA@22..23 ","
25 WHITESPACE@[23; 24) " " 25 WHITESPACE@23..24 " "
26 BIND_PAT@[24; 25) 26 BIND_PAT@24..25
27 NAME@[24; 25) 27 NAME@24..25
28 IDENT@[24; 25) "b" 28 IDENT@24..25 "b"
29 R_PAREN@[25; 26) ")" 29 R_PAREN@25..26 ")"
30 COLON@[26; 27) ":" 30 COLON@26..27 ":"
31 WHITESPACE@[27; 28) " " 31 WHITESPACE@27..28 " "
32 TUPLE_TYPE@[28; 42) 32 TUPLE_TYPE@28..42
33 L_PAREN@[28; 29) "(" 33 L_PAREN@28..29 "("
34 PATH_TYPE@[29; 34) 34 PATH_TYPE@29..34
35 PATH@[29; 34) 35 PATH@29..34
36 PATH_SEGMENT@[29; 34) 36 PATH_SEGMENT@29..34
37 NAME_REF@[29; 34) 37 NAME_REF@29..34
38 IDENT@[29; 34) "usize" 38 IDENT@29..34 "usize"
39 COMMA@[34; 35) "," 39 COMMA@34..35 ","
40 WHITESPACE@[35; 36) " " 40 WHITESPACE@35..36 " "
41 PATH_TYPE@[36; 41) 41 PATH_TYPE@36..41
42 PATH@[36; 41) 42 PATH@36..41
43 PATH_SEGMENT@[36; 41) 43 PATH_SEGMENT@36..41
44 NAME_REF@[36; 41) 44 NAME_REF@36..41
45 IDENT@[36; 41) "usize" 45 IDENT@36..41 "usize"
46 R_PAREN@[41; 42) ")" 46 R_PAREN@41..42 ")"
47 R_PAREN@[42; 43) ")" 47 R_PAREN@42..43 ")"
48 WHITESPACE@[43; 44) " " 48 WHITESPACE@43..44 " "
49 BLOCK_EXPR@[44; 46) 49 BLOCK_EXPR@44..46
50 BLOCK@[44; 46) 50 BLOCK@44..46
51 L_CURLY@[44; 45) "{" 51 L_CURLY@44..45 "{"
52 R_CURLY@[45; 46) "}" 52 R_CURLY@45..46 "}"
53 WHITESPACE@[46; 51) "\n " 53 WHITESPACE@46..51 "\n "
54 FN_DEF@[51; 74) 54 FN_DEF@51..74
55 FN_KW@[51; 53) "fn" 55 FN_KW@51..53 "fn"
56 WHITESPACE@[53; 54) " " 56 WHITESPACE@53..54 " "
57 NAME@[54; 56) 57 NAME@54..56
58 IDENT@[54; 56) "f2" 58 IDENT@54..56 "f2"
59 PARAM_LIST@[56; 71) 59 PARAM_LIST@56..71
60 L_PAREN@[56; 57) "(" 60 L_PAREN@56..57 "("
61 PARAM@[57; 70) 61 PARAM@57..70
62 RECORD_PAT@[57; 67) 62 RECORD_PAT@57..67
63 PATH@[57; 58) 63 PATH@57..58
64 PATH_SEGMENT@[57; 58) 64 PATH_SEGMENT@57..58
65 NAME_REF@[57; 58) 65 NAME_REF@57..58
66 IDENT@[57; 58) "S" 66 IDENT@57..58 "S"
67 WHITESPACE@[58; 59) " " 67 WHITESPACE@58..59 " "
68 RECORD_FIELD_PAT_LIST@[59; 67) 68 RECORD_FIELD_PAT_LIST@59..67
69 L_CURLY@[59; 60) "{" 69 L_CURLY@59..60 "{"
70 WHITESPACE@[60; 61) " " 70 WHITESPACE@60..61 " "
71 RECORD_FIELD_PAT@[61; 62) 71 RECORD_FIELD_PAT@61..62
72 BIND_PAT@[61; 62) 72 BIND_PAT@61..62
73 NAME@[61; 62) 73 NAME@61..62
74 IDENT@[61; 62) "a" 74 IDENT@61..62 "a"
75 COMMA@[62; 63) "," 75 COMMA@62..63 ","
76 WHITESPACE@[63; 64) " " 76 WHITESPACE@63..64 " "
77 RECORD_FIELD_PAT@[64; 65) 77 RECORD_FIELD_PAT@64..65
78 BIND_PAT@[64; 65) 78 BIND_PAT@64..65
79 NAME@[64; 65) 79 NAME@64..65
80 IDENT@[64; 65) "b" 80 IDENT@64..65 "b"
81 WHITESPACE@[65; 66) " " 81 WHITESPACE@65..66 " "
82 R_CURLY@[66; 67) "}" 82 R_CURLY@66..67 "}"
83 COLON@[67; 68) ":" 83 COLON@67..68 ":"
84 WHITESPACE@[68; 69) " " 84 WHITESPACE@68..69 " "
85 PATH_TYPE@[69; 70) 85 PATH_TYPE@69..70
86 PATH@[69; 70) 86 PATH@69..70
87 PATH_SEGMENT@[69; 70) 87 PATH_SEGMENT@69..70
88 NAME_REF@[69; 70) 88 NAME_REF@69..70
89 IDENT@[69; 70) "S" 89 IDENT@69..70 "S"
90 R_PAREN@[70; 71) ")" 90 R_PAREN@70..71 ")"
91 WHITESPACE@[71; 72) " " 91 WHITESPACE@71..72 " "
92 BLOCK_EXPR@[72; 74) 92 BLOCK_EXPR@72..74
93 BLOCK@[72; 74) 93 BLOCK@72..74
94 L_CURLY@[72; 73) "{" 94 L_CURLY@72..73 "{"
95 R_CURLY@[73; 74) "}" 95 R_CURLY@73..74 "}"
96 WHITESPACE@[74; 79) "\n " 96 WHITESPACE@74..79 "\n "
97 FN_DEF@[79; 108) 97 FN_DEF@79..108
98 FN_KW@[79; 81) "fn" 98 FN_KW@79..81 "fn"
99 WHITESPACE@[81; 82) " " 99 WHITESPACE@81..82 " "
100 NAME@[82; 84) 100 NAME@82..84
101 IDENT@[82; 84) "f3" 101 IDENT@82..84 "f3"
102 PARAM_LIST@[84; 105) 102 PARAM_LIST@84..105
103 L_PAREN@[84; 85) "(" 103 L_PAREN@84..85 "("
104 PARAM@[85; 104) 104 PARAM@85..104
105 TUPLE_STRUCT_PAT@[85; 95) 105 TUPLE_STRUCT_PAT@85..95
106 PATH@[85; 92) 106 PATH@85..92
107 PATH_SEGMENT@[85; 92) 107 PATH_SEGMENT@85..92
108 NAME_REF@[85; 92) 108 NAME_REF@85..92
109 IDENT@[85; 92) "NewType" 109 IDENT@85..92 "NewType"
110 L_PAREN@[92; 93) "(" 110 L_PAREN@92..93 "("
111 BIND_PAT@[93; 94) 111 BIND_PAT@93..94
112 NAME@[93; 94) 112 NAME@93..94
113 IDENT@[93; 94) "a" 113 IDENT@93..94 "a"
114 R_PAREN@[94; 95) ")" 114 R_PAREN@94..95 ")"
115 COLON@[95; 96) ":" 115 COLON@95..96 ":"
116 WHITESPACE@[96; 97) " " 116 WHITESPACE@96..97 " "
117 PATH_TYPE@[97; 104) 117 PATH_TYPE@97..104
118 PATH@[97; 104) 118 PATH@97..104
119 PATH_SEGMENT@[97; 104) 119 PATH_SEGMENT@97..104
120 NAME_REF@[97; 104) 120 NAME_REF@97..104
121 IDENT@[97; 104) "NewType" 121 IDENT@97..104 "NewType"
122 R_PAREN@[104; 105) ")" 122 R_PAREN@104..105 ")"
123 WHITESPACE@[105; 106) " " 123 WHITESPACE@105..106 " "
124 BLOCK_EXPR@[106; 108) 124 BLOCK_EXPR@106..108
125 BLOCK@[106; 108) 125 BLOCK@106..108
126 L_CURLY@[106; 107) "{" 126 L_CURLY@106..107 "{"
127 R_CURLY@[107; 108) "}" 127 R_CURLY@107..108 "}"
128 WHITESPACE@[108; 113) "\n " 128 WHITESPACE@108..113 "\n "
129 FN_DEF@[113; 135) 129 FN_DEF@113..135
130 FN_KW@[113; 115) "fn" 130 FN_KW@113..115 "fn"
131 WHITESPACE@[115; 116) " " 131 WHITESPACE@115..116 " "
132 NAME@[116; 118) 132 NAME@116..118
133 IDENT@[116; 118) "f4" 133 IDENT@116..118 "f4"
134 PARAM_LIST@[118; 132) 134 PARAM_LIST@118..132
135 L_PAREN@[118; 119) "(" 135 L_PAREN@118..119 "("
136 PARAM@[119; 131) 136 PARAM@119..131
137 REF_PAT@[119; 122) 137 REF_PAT@119..122
138 AMP@[119; 120) "&" 138 AMP@119..120 "&"
139 REF_PAT@[120; 122) 139 REF_PAT@120..122
140 AMP@[120; 121) "&" 140 AMP@120..121 "&"
141 BIND_PAT@[121; 122) 141 BIND_PAT@121..122
142 NAME@[121; 122) 142 NAME@121..122
143 IDENT@[121; 122) "a" 143 IDENT@121..122 "a"
144 COLON@[122; 123) ":" 144 COLON@122..123 ":"
145 WHITESPACE@[123; 124) " " 145 WHITESPACE@123..124 " "
146 REFERENCE_TYPE@[124; 131) 146 REFERENCE_TYPE@124..131
147 AMP@[124; 125) "&" 147 AMP@124..125 "&"
148 REFERENCE_TYPE@[125; 131) 148 REFERENCE_TYPE@125..131
149 AMP@[125; 126) "&" 149 AMP@125..126 "&"
150 PATH_TYPE@[126; 131) 150 PATH_TYPE@126..131
151 PATH@[126; 131) 151 PATH@126..131
152 PATH_SEGMENT@[126; 131) 152 PATH_SEGMENT@126..131
153 NAME_REF@[126; 131) 153 NAME_REF@126..131
154 IDENT@[126; 131) "usize" 154 IDENT@126..131 "usize"
155 R_PAREN@[131; 132) ")" 155 R_PAREN@131..132 ")"
156 WHITESPACE@[132; 133) " " 156 WHITESPACE@132..133 " "
157 BLOCK_EXPR@[133; 135) 157 BLOCK_EXPR@133..135
158 BLOCK@[133; 135) 158 BLOCK@133..135
159 L_CURLY@[133; 134) "{" 159 L_CURLY@133..134 "{"
160 R_CURLY@[134; 135) "}" 160 R_CURLY@134..135 "}"
161 WHITESPACE@[135; 140) "\n " 161 WHITESPACE@135..140 "\n "
162 FN_DEF@[140; 167) 162 FN_DEF@140..167
163 FN_KW@[140; 142) "fn" 163 FN_KW@140..142 "fn"
164 WHITESPACE@[142; 143) " " 164 WHITESPACE@142..143 " "
165 NAME@[143; 146) 165 NAME@143..146
166 IDENT@[143; 146) "bar" 166 IDENT@143..146 "bar"
167 PARAM_LIST@[146; 166) 167 PARAM_LIST@146..166
168 L_PAREN@[146; 147) "(" 168 L_PAREN@146..147 "("
169 PARAM@[147; 153) 169 PARAM@147..153
170 PLACEHOLDER_PAT@[147; 148) 170 PLACEHOLDER_PAT@147..148
171 UNDERSCORE@[147; 148) "_" 171 UNDERSCORE@147..148 "_"
172 COLON@[148; 149) ":" 172 COLON@148..149 ":"
173 WHITESPACE@[149; 150) " " 173 WHITESPACE@149..150 " "
174 PATH_TYPE@[150; 153) 174 PATH_TYPE@150..153
175 PATH@[150; 153) 175 PATH@150..153
176 PATH_SEGMENT@[150; 153) 176 PATH_SEGMENT@150..153
177 NAME_REF@[150; 153) 177 NAME_REF@150..153
178 IDENT@[150; 153) "u64" 178 IDENT@150..153 "u64"
179 COMMA@[153; 154) "," 179 COMMA@153..154 ","
180 WHITESPACE@[154; 155) " " 180 WHITESPACE@154..155 " "
181 PARAM@[155; 165) 181 PARAM@155..165
182 BIND_PAT@[155; 160) 182 BIND_PAT@155..160
183 MUT_KW@[155; 158) "mut" 183 MUT_KW@155..158 "mut"
184 WHITESPACE@[158; 159) " " 184 WHITESPACE@158..159 " "
185 NAME@[159; 160) 185 NAME@159..160
186 IDENT@[159; 160) "x" 186 IDENT@159..160 "x"
187 COLON@[160; 161) ":" 187 COLON@160..161 ":"
188 WHITESPACE@[161; 162) " " 188 WHITESPACE@161..162 " "
189 PATH_TYPE@[162; 165) 189 PATH_TYPE@162..165
190 PATH@[162; 165) 190 PATH@162..165
191 PATH_SEGMENT@[162; 165) 191 PATH_SEGMENT@162..165
192 NAME_REF@[162; 165) 192 NAME_REF@162..165
193 IDENT@[162; 165) "i32" 193 IDENT@162..165 "i32"
194 R_PAREN@[165; 166) ")" 194 R_PAREN@165..166 ")"
195 SEMICOLON@[166; 167) ";" 195 SEMICOLON@166..167 ";"
196 WHITESPACE@[167; 168) "\n" 196 WHITESPACE@167..168 "\n"
197 R_CURLY@[168; 169) "}" 197 R_CURLY@168..169 "}"
198 WHITESPACE@[169; 170) "\n" 198 WHITESPACE@169..170 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.rast b/crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.rast
index 17b08197b..5a9f07c89 100644
--- a/crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.rast
@@ -1,133 +1,133 @@
1SOURCE_FILE@[0; 126) 1SOURCE_FILE@0..126
2 EXTERN_BLOCK@[0; 125) 2 EXTERN_BLOCK@0..125
3 ABI@[0; 10) 3 ABI@0..10
4 EXTERN_KW@[0; 6) "extern" 4 EXTERN_KW@0..6 "extern"
5 WHITESPACE@[6; 7) " " 5 WHITESPACE@6..7 " "
6 STRING@[7; 10) "\"C\"" 6 STRING@7..10 "\"C\""
7 WHITESPACE@[10; 11) " " 7 WHITESPACE@10..11 " "
8 EXTERN_ITEM_LIST@[11; 125) 8 EXTERN_ITEM_LIST@11..125
9 L_CURLY@[11; 12) "{" 9 L_CURLY@11..12 "{"
10 WHITESPACE@[12; 17) "\n " 10 WHITESPACE@12..17 "\n "
11 FN_DEF@[17; 40) 11 FN_DEF@17..40
12 FN_KW@[17; 19) "fn" 12 FN_KW@17..19 "fn"
13 WHITESPACE@[19; 20) " " 13 WHITESPACE@19..20 " "
14 NAME@[20; 21) 14 NAME@20..21
15 IDENT@[20; 21) "a" 15 IDENT@20..21 "a"
16 PARAM_LIST@[21; 39) 16 PARAM_LIST@21..39
17 L_PAREN@[21; 22) "(" 17 L_PAREN@21..22 "("
18 PARAM@[22; 32) 18 PARAM@22..32
19 PLACEHOLDER_PAT@[22; 23) 19 PLACEHOLDER_PAT@22..23
20 UNDERSCORE@[22; 23) "_" 20 UNDERSCORE@22..23 "_"
21 COLON@[23; 24) ":" 21 COLON@23..24 ":"
22 WHITESPACE@[24; 25) " " 22 WHITESPACE@24..25 " "
23 POINTER_TYPE@[25; 32) 23 POINTER_TYPE@25..32
24 STAR@[25; 26) "*" 24 STAR@25..26 "*"
25 MUT_KW@[26; 29) "mut" 25 MUT_KW@26..29 "mut"
26 WHITESPACE@[29; 30) " " 26 WHITESPACE@29..30 " "
27 PATH_TYPE@[30; 32) 27 PATH_TYPE@30..32
28 PATH@[30; 32) 28 PATH@30..32
29 PATH_SEGMENT@[30; 32) 29 PATH_SEGMENT@30..32
30 NAME_REF@[30; 32) 30 NAME_REF@30..32
31 IDENT@[30; 32) "u8" 31 IDENT@30..32 "u8"
32 COMMA@[32; 33) "," 32 COMMA@32..33 ","
33 WHITESPACE@[33; 34) " " 33 WHITESPACE@33..34 " "
34 PARAM@[34; 37) 34 PARAM@34..37
35 DOT3@[34; 37) "..." 35 DOT3@34..37 "..."
36 COMMA@[37; 38) "," 36 COMMA@37..38 ","
37 R_PAREN@[38; 39) ")" 37 R_PAREN@38..39 ")"
38 SEMICOLON@[39; 40) ";" 38 SEMICOLON@39..40 ";"
39 WHITESPACE@[40; 45) "\n " 39 WHITESPACE@40..45 "\n "
40 FN_DEF@[45; 70) 40 FN_DEF@45..70
41 FN_KW@[45; 47) "fn" 41 FN_KW@45..47 "fn"
42 WHITESPACE@[47; 48) " " 42 WHITESPACE@47..48 " "
43 NAME@[48; 49) 43 NAME@48..49
44 IDENT@[48; 49) "b" 44 IDENT@48..49 "b"
45 PARAM_LIST@[49; 69) 45 PARAM_LIST@49..69
46 L_PAREN@[49; 50) "(" 46 L_PAREN@49..50 "("
47 PARAM@[50; 60) 47 PARAM@50..60
48 PLACEHOLDER_PAT@[50; 51) 48 PLACEHOLDER_PAT@50..51
49 UNDERSCORE@[50; 51) "_" 49 UNDERSCORE@50..51 "_"
50 COLON@[51; 52) ":" 50 COLON@51..52 ":"
51 WHITESPACE@[52; 53) " " 51 WHITESPACE@52..53 " "
52 POINTER_TYPE@[53; 60) 52 POINTER_TYPE@53..60
53 STAR@[53; 54) "*" 53 STAR@53..54 "*"
54 MUT_KW@[54; 57) "mut" 54 MUT_KW@54..57 "mut"
55 WHITESPACE@[57; 58) " " 55 WHITESPACE@57..58 " "
56 PATH_TYPE@[58; 60) 56 PATH_TYPE@58..60
57 PATH@[58; 60) 57 PATH@58..60
58 PATH_SEGMENT@[58; 60) 58 PATH_SEGMENT@58..60
59 NAME_REF@[58; 60) 59 NAME_REF@58..60
60 IDENT@[58; 60) "u8" 60 IDENT@58..60 "u8"
61 COMMA@[60; 61) "," 61 COMMA@60..61 ","
62 WHITESPACE@[61; 62) " " 62 WHITESPACE@61..62 " "
63 PARAM@[62; 68) 63 PARAM@62..68
64 PLACEHOLDER_PAT@[62; 63) 64 PLACEHOLDER_PAT@62..63
65 UNDERSCORE@[62; 63) "_" 65 UNDERSCORE@62..63 "_"
66 COLON@[63; 64) ":" 66 COLON@63..64 ":"
67 WHITESPACE@[64; 65) " " 67 WHITESPACE@64..65 " "
68 DOT3@[65; 68) "..." 68 DOT3@65..68 "..."
69 R_PAREN@[68; 69) ")" 69 R_PAREN@68..69 ")"
70 SEMICOLON@[69; 70) ";" 70 SEMICOLON@69..70 ";"
71 WHITESPACE@[70; 75) "\n " 71 WHITESPACE@70..75 "\n "
72 FN_DEF@[75; 123) 72 FN_DEF@75..123
73 FN_KW@[75; 77) "fn" 73 FN_KW@75..77 "fn"
74 WHITESPACE@[77; 78) " " 74 WHITESPACE@77..78 " "
75 NAME@[78; 79) 75 NAME@78..79
76 IDENT@[78; 79) "c" 76 IDENT@78..79 "c"
77 PARAM_LIST@[79; 122) 77 PARAM_LIST@79..122
78 L_PAREN@[79; 80) "(" 78 L_PAREN@79..80 "("
79 PARAM@[80; 90) 79 PARAM@80..90
80 PLACEHOLDER_PAT@[80; 81) 80 PLACEHOLDER_PAT@80..81
81 UNDERSCORE@[80; 81) "_" 81 UNDERSCORE@80..81 "_"
82 COLON@[81; 82) ":" 82 COLON@81..82 ":"
83 WHITESPACE@[82; 83) " " 83 WHITESPACE@82..83 " "
84 POINTER_TYPE@[83; 90) 84 POINTER_TYPE@83..90
85 STAR@[83; 84) "*" 85 STAR@83..84 "*"
86 MUT_KW@[84; 87) "mut" 86 MUT_KW@84..87 "mut"
87 WHITESPACE@[87; 88) " " 87 WHITESPACE@87..88 " "
88 PATH_TYPE@[88; 90) 88 PATH_TYPE@88..90
89 PATH@[88; 90) 89 PATH@88..90
90 PATH_SEGMENT@[88; 90) 90 PATH_SEGMENT@88..90
91 NAME_REF@[88; 90) 91 NAME_REF@88..90
92 IDENT@[88; 90) "u8" 92 IDENT@88..90 "u8"
93 COMMA@[90; 91) "," 93 COMMA@90..91 ","
94 WHITESPACE@[91; 92) " " 94 WHITESPACE@91..92 " "
95 ATTR@[92; 105) 95 ATTR@92..105
96 POUND@[92; 93) "#" 96 POUND@92..93 "#"
97 L_BRACK@[93; 94) "[" 97 L_BRACK@93..94 "["
98 PATH@[94; 97) 98 PATH@94..97
99 PATH_SEGMENT@[94; 97) 99 PATH_SEGMENT@94..97
100 NAME_REF@[94; 97) 100 NAME_REF@94..97
101 IDENT@[94; 97) "cfg" 101 IDENT@94..97 "cfg"
102 TOKEN_TREE@[97; 104) 102 TOKEN_TREE@97..104
103 L_PAREN@[97; 98) "(" 103 L_PAREN@97..98 "("
104 IDENT@[98; 103) "never" 104 IDENT@98..103 "never"
105 R_PAREN@[103; 104) ")" 105 R_PAREN@103..104 ")"
106 R_BRACK@[104; 105) "]" 106 R_BRACK@104..105 "]"
107 WHITESPACE@[105; 106) " " 107 WHITESPACE@105..106 " "
108 PARAM@[106; 120) 108 PARAM@106..120
109 SLICE_PAT@[106; 115) 109 SLICE_PAT@106..115
110 L_BRACK@[106; 107) "[" 110 L_BRACK@106..107 "["
111 BIND_PAT@[107; 108) 111 BIND_PAT@107..108
112 NAME@[107; 108) 112 NAME@107..108
113 IDENT@[107; 108) "w" 113 IDENT@107..108 "w"
114 COMMA@[108; 109) "," 114 COMMA@108..109 ","
115 WHITESPACE@[109; 110) " " 115 WHITESPACE@109..110 " "
116 BIND_PAT@[110; 111) 116 BIND_PAT@110..111
117 NAME@[110; 111) 117 NAME@110..111
118 IDENT@[110; 111) "t" 118 IDENT@110..111 "t"
119 COMMA@[111; 112) "," 119 COMMA@111..112 ","
120 WHITESPACE@[112; 113) " " 120 WHITESPACE@112..113 " "
121 BIND_PAT@[113; 114) 121 BIND_PAT@113..114
122 NAME@[113; 114) 122 NAME@113..114
123 IDENT@[113; 114) "f" 123 IDENT@113..114 "f"
124 R_BRACK@[114; 115) "]" 124 R_BRACK@114..115 "]"
125 COLON@[115; 116) ":" 125 COLON@115..116 ":"
126 WHITESPACE@[116; 117) " " 126 WHITESPACE@116..117 " "
127 DOT3@[117; 120) "..." 127 DOT3@117..120 "..."
128 COMMA@[120; 121) "," 128 COMMA@120..121 ","
129 R_PAREN@[121; 122) ")" 129 R_PAREN@121..122 ")"
130 SEMICOLON@[122; 123) ";" 130 SEMICOLON@122..123 ";"
131 WHITESPACE@[123; 124) "\n" 131 WHITESPACE@123..124 "\n"
132 R_CURLY@[124; 125) "}" 132 R_CURLY@124..125 "}"
133 WHITESPACE@[125; 126) "\n" 133 WHITESPACE@125..126 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.rast b/crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.rast
index 5e96b695b..4f9a14066 100644
--- a/crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.rast
@@ -1,166 +1,166 @@
1SOURCE_FILE@[0; 137) 1SOURCE_FILE@0..137
2 IMPL_DEF@[0; 136) 2 IMPL_DEF@0..136
3 IMPL_KW@[0; 4) "impl" 3 IMPL_KW@0..4 "impl"
4 WHITESPACE@[4; 5) " " 4 WHITESPACE@4..5 " "
5 PATH_TYPE@[5; 6) 5 PATH_TYPE@5..6
6 PATH@[5; 6) 6 PATH@5..6
7 PATH_SEGMENT@[5; 6) 7 PATH_SEGMENT@5..6
8 NAME_REF@[5; 6) 8 NAME_REF@5..6
9 IDENT@[5; 6) "U" 9 IDENT@5..6 "U"
10 WHITESPACE@[6; 7) " " 10 WHITESPACE@6..7 " "
11 ITEM_LIST@[7; 136) 11 ITEM_LIST@7..136
12 L_CURLY@[7; 8) "{" 12 L_CURLY@7..8 "{"
13 WHITESPACE@[8; 13) "\n " 13 WHITESPACE@8..13 "\n "
14 FN_DEF@[13; 45) 14 FN_DEF@13..45
15 FN_KW@[13; 15) "fn" 15 FN_KW@13..15 "fn"
16 WHITESPACE@[15; 16) " " 16 WHITESPACE@15..16 " "
17 NAME@[16; 18) 17 NAME@16..18
18 IDENT@[16; 18) "f1" 18 IDENT@16..18 "f1"
19 PARAM_LIST@[18; 42) 19 PARAM_LIST@18..42
20 L_PAREN@[18; 19) "(" 20 L_PAREN@18..19 "("
21 PARAM@[19; 41) 21 PARAM@19..41
22 TUPLE_PAT@[19; 25) 22 TUPLE_PAT@19..25
23 L_PAREN@[19; 20) "(" 23 L_PAREN@19..20 "("
24 BIND_PAT@[20; 21) 24 BIND_PAT@20..21
25 NAME@[20; 21) 25 NAME@20..21
26 IDENT@[20; 21) "a" 26 IDENT@20..21 "a"
27 COMMA@[21; 22) "," 27 COMMA@21..22 ","
28 WHITESPACE@[22; 23) " " 28 WHITESPACE@22..23 " "
29 BIND_PAT@[23; 24) 29 BIND_PAT@23..24
30 NAME@[23; 24) 30 NAME@23..24
31 IDENT@[23; 24) "b" 31 IDENT@23..24 "b"
32 R_PAREN@[24; 25) ")" 32 R_PAREN@24..25 ")"
33 COLON@[25; 26) ":" 33 COLON@25..26 ":"
34 WHITESPACE@[26; 27) " " 34 WHITESPACE@26..27 " "
35 TUPLE_TYPE@[27; 41) 35 TUPLE_TYPE@27..41
36 L_PAREN@[27; 28) "(" 36 L_PAREN@27..28 "("
37 PATH_TYPE@[28; 33) 37 PATH_TYPE@28..33
38 PATH@[28; 33) 38 PATH@28..33
39 PATH_SEGMENT@[28; 33) 39 PATH_SEGMENT@28..33
40 NAME_REF@[28; 33) 40 NAME_REF@28..33
41 IDENT@[28; 33) "usize" 41 IDENT@28..33 "usize"
42 COMMA@[33; 34) "," 42 COMMA@33..34 ","
43 WHITESPACE@[34; 35) " " 43 WHITESPACE@34..35 " "
44 PATH_TYPE@[35; 40) 44 PATH_TYPE@35..40
45 PATH@[35; 40) 45 PATH@35..40
46 PATH_SEGMENT@[35; 40) 46 PATH_SEGMENT@35..40
47 NAME_REF@[35; 40) 47 NAME_REF@35..40
48 IDENT@[35; 40) "usize" 48 IDENT@35..40 "usize"
49 R_PAREN@[40; 41) ")" 49 R_PAREN@40..41 ")"
50 R_PAREN@[41; 42) ")" 50 R_PAREN@41..42 ")"
51 WHITESPACE@[42; 43) " " 51 WHITESPACE@42..43 " "
52 BLOCK_EXPR@[43; 45) 52 BLOCK_EXPR@43..45
53 BLOCK@[43; 45) 53 BLOCK@43..45
54 L_CURLY@[43; 44) "{" 54 L_CURLY@43..44 "{"
55 R_CURLY@[44; 45) "}" 55 R_CURLY@44..45 "}"
56 WHITESPACE@[45; 50) "\n " 56 WHITESPACE@45..50 "\n "
57 FN_DEF@[50; 73) 57 FN_DEF@50..73
58 FN_KW@[50; 52) "fn" 58 FN_KW@50..52 "fn"
59 WHITESPACE@[52; 53) " " 59 WHITESPACE@52..53 " "
60 NAME@[53; 55) 60 NAME@53..55
61 IDENT@[53; 55) "f2" 61 IDENT@53..55 "f2"
62 PARAM_LIST@[55; 70) 62 PARAM_LIST@55..70
63 L_PAREN@[55; 56) "(" 63 L_PAREN@55..56 "("
64 PARAM@[56; 69) 64 PARAM@56..69
65 RECORD_PAT@[56; 66) 65 RECORD_PAT@56..66
66 PATH@[56; 57) 66 PATH@56..57
67 PATH_SEGMENT@[56; 57) 67 PATH_SEGMENT@56..57
68 NAME_REF@[56; 57) 68 NAME_REF@56..57
69 IDENT@[56; 57) "S" 69 IDENT@56..57 "S"
70 WHITESPACE@[57; 58) " " 70 WHITESPACE@57..58 " "
71 RECORD_FIELD_PAT_LIST@[58; 66) 71 RECORD_FIELD_PAT_LIST@58..66
72 L_CURLY@[58; 59) "{" 72 L_CURLY@58..59 "{"
73 WHITESPACE@[59; 60) " " 73 WHITESPACE@59..60 " "
74 RECORD_FIELD_PAT@[60; 61) 74 RECORD_FIELD_PAT@60..61
75 BIND_PAT@[60; 61) 75 BIND_PAT@60..61
76 NAME@[60; 61) 76 NAME@60..61
77 IDENT@[60; 61) "a" 77 IDENT@60..61 "a"
78 COMMA@[61; 62) "," 78 COMMA@61..62 ","
79 WHITESPACE@[62; 63) " " 79 WHITESPACE@62..63 " "
80 RECORD_FIELD_PAT@[63; 64) 80 RECORD_FIELD_PAT@63..64
81 BIND_PAT@[63; 64) 81 BIND_PAT@63..64
82 NAME@[63; 64) 82 NAME@63..64
83 IDENT@[63; 64) "b" 83 IDENT@63..64 "b"
84 WHITESPACE@[64; 65) " " 84 WHITESPACE@64..65 " "
85 R_CURLY@[65; 66) "}" 85 R_CURLY@65..66 "}"
86 COLON@[66; 67) ":" 86 COLON@66..67 ":"
87 WHITESPACE@[67; 68) " " 87 WHITESPACE@67..68 " "
88 PATH_TYPE@[68; 69) 88 PATH_TYPE@68..69
89 PATH@[68; 69) 89 PATH@68..69
90 PATH_SEGMENT@[68; 69) 90 PATH_SEGMENT@68..69
91 NAME_REF@[68; 69) 91 NAME_REF@68..69
92 IDENT@[68; 69) "S" 92 IDENT@68..69 "S"
93 R_PAREN@[69; 70) ")" 93 R_PAREN@69..70 ")"
94 WHITESPACE@[70; 71) " " 94 WHITESPACE@70..71 " "
95 BLOCK_EXPR@[71; 73) 95 BLOCK_EXPR@71..73
96 BLOCK@[71; 73) 96 BLOCK@71..73
97 L_CURLY@[71; 72) "{" 97 L_CURLY@71..72 "{"
98 R_CURLY@[72; 73) "}" 98 R_CURLY@72..73 "}"
99 WHITESPACE@[73; 78) "\n " 99 WHITESPACE@73..78 "\n "
100 FN_DEF@[78; 107) 100 FN_DEF@78..107
101 FN_KW@[78; 80) "fn" 101 FN_KW@78..80 "fn"
102 WHITESPACE@[80; 81) " " 102 WHITESPACE@80..81 " "
103 NAME@[81; 83) 103 NAME@81..83
104 IDENT@[81; 83) "f3" 104 IDENT@81..83 "f3"
105 PARAM_LIST@[83; 104) 105 PARAM_LIST@83..104
106 L_PAREN@[83; 84) "(" 106 L_PAREN@83..84 "("
107 PARAM@[84; 103) 107 PARAM@84..103
108 TUPLE_STRUCT_PAT@[84; 94) 108 TUPLE_STRUCT_PAT@84..94
109 PATH@[84; 91) 109 PATH@84..91
110 PATH_SEGMENT@[84; 91) 110 PATH_SEGMENT@84..91
111 NAME_REF@[84; 91) 111 NAME_REF@84..91
112 IDENT@[84; 91) "NewType" 112 IDENT@84..91 "NewType"
113 L_PAREN@[91; 92) "(" 113 L_PAREN@91..92 "("
114 BIND_PAT@[92; 93) 114 BIND_PAT@92..93
115 NAME@[92; 93) 115 NAME@92..93
116 IDENT@[92; 93) "a" 116 IDENT@92..93 "a"
117 R_PAREN@[93; 94) ")" 117 R_PAREN@93..94 ")"
118 COLON@[94; 95) ":" 118 COLON@94..95 ":"
119 WHITESPACE@[95; 96) " " 119 WHITESPACE@95..96 " "
120 PATH_TYPE@[96; 103) 120 PATH_TYPE@96..103
121 PATH@[96; 103) 121 PATH@96..103
122 PATH_SEGMENT@[96; 103) 122 PATH_SEGMENT@96..103
123 NAME_REF@[96; 103) 123 NAME_REF@96..103
124 IDENT@[96; 103) "NewType" 124 IDENT@96..103 "NewType"
125 R_PAREN@[103; 104) ")" 125 R_PAREN@103..104 ")"
126 WHITESPACE@[104; 105) " " 126 WHITESPACE@104..105 " "
127 BLOCK_EXPR@[105; 107) 127 BLOCK_EXPR@105..107
128 BLOCK@[105; 107) 128 BLOCK@105..107
129 L_CURLY@[105; 106) "{" 129 L_CURLY@105..106 "{"
130 R_CURLY@[106; 107) "}" 130 R_CURLY@106..107 "}"
131 WHITESPACE@[107; 112) "\n " 131 WHITESPACE@107..112 "\n "
132 FN_DEF@[112; 134) 132 FN_DEF@112..134
133 FN_KW@[112; 114) "fn" 133 FN_KW@112..114 "fn"
134 WHITESPACE@[114; 115) " " 134 WHITESPACE@114..115 " "
135 NAME@[115; 117) 135 NAME@115..117
136 IDENT@[115; 117) "f4" 136 IDENT@115..117 "f4"
137 PARAM_LIST@[117; 131) 137 PARAM_LIST@117..131
138 L_PAREN@[117; 118) "(" 138 L_PAREN@117..118 "("
139 PARAM@[118; 130) 139 PARAM@118..130
140 REF_PAT@[118; 121) 140 REF_PAT@118..121
141 AMP@[118; 119) "&" 141 AMP@118..119 "&"
142 REF_PAT@[119; 121) 142 REF_PAT@119..121
143 AMP@[119; 120) "&" 143 AMP@119..120 "&"
144 BIND_PAT@[120; 121) 144 BIND_PAT@120..121
145 NAME@[120; 121) 145 NAME@120..121
146 IDENT@[120; 121) "a" 146 IDENT@120..121 "a"
147 COLON@[121; 122) ":" 147 COLON@121..122 ":"
148 WHITESPACE@[122; 123) " " 148 WHITESPACE@122..123 " "
149 REFERENCE_TYPE@[123; 130) 149 REFERENCE_TYPE@123..130
150 AMP@[123; 124) "&" 150 AMP@123..124 "&"
151 REFERENCE_TYPE@[124; 130) 151 REFERENCE_TYPE@124..130
152 AMP@[124; 125) "&" 152 AMP@124..125 "&"
153 PATH_TYPE@[125; 130) 153 PATH_TYPE@125..130
154 PATH@[125; 130) 154 PATH@125..130
155 PATH_SEGMENT@[125; 130) 155 PATH_SEGMENT@125..130
156 NAME_REF@[125; 130) 156 NAME_REF@125..130
157 IDENT@[125; 130) "usize" 157 IDENT@125..130 "usize"
158 R_PAREN@[130; 131) ")" 158 R_PAREN@130..131 ")"
159 WHITESPACE@[131; 132) " " 159 WHITESPACE@131..132 " "
160 BLOCK_EXPR@[132; 134) 160 BLOCK_EXPR@132..134
161 BLOCK@[132; 134) 161 BLOCK@132..134
162 L_CURLY@[132; 133) "{" 162 L_CURLY@132..133 "{"
163 R_CURLY@[133; 134) "}" 163 R_CURLY@133..134 "}"
164 WHITESPACE@[134; 135) "\n" 164 WHITESPACE@134..135 "\n"
165 R_CURLY@[135; 136) "}" 165 R_CURLY@135..136 "}"
166 WHITESPACE@[136; 137) "\n" 166 WHITESPACE@136..137 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0065_comment_newline.rast b/crates/ra_syntax/test_data/parser/ok/0065_comment_newline.rast
index 91d0c3736..3294f4901 100644
--- a/crates/ra_syntax/test_data/parser/ok/0065_comment_newline.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0065_comment_newline.rast
@@ -1,17 +1,17 @@
1SOURCE_FILE@[0; 26) 1SOURCE_FILE@0..26
2 FN_DEF@[0; 25) 2 FN_DEF@0..25
3 COMMENT@[0; 11) "/// Example" 3 COMMENT@0..11 "/// Example"
4 WHITESPACE@[11; 13) "\n\n" 4 WHITESPACE@11..13 "\n\n"
5 FN_KW@[13; 15) "fn" 5 FN_KW@13..15 "fn"
6 WHITESPACE@[15; 16) " " 6 WHITESPACE@15..16 " "
7 NAME@[16; 20) 7 NAME@16..20
8 IDENT@[16; 20) "test" 8 IDENT@16..20 "test"
9 PARAM_LIST@[20; 22) 9 PARAM_LIST@20..22
10 L_PAREN@[20; 21) "(" 10 L_PAREN@20..21 "("
11 R_PAREN@[21; 22) ")" 11 R_PAREN@21..22 ")"
12 WHITESPACE@[22; 23) " " 12 WHITESPACE@22..23 " "
13 BLOCK_EXPR@[23; 25) 13 BLOCK_EXPR@23..25
14 BLOCK@[23; 25) 14 BLOCK@23..25
15 L_CURLY@[23; 24) "{" 15 L_CURLY@23..24 "{"
16 R_CURLY@[24; 25) "}" 16 R_CURLY@24..25 "}"
17 WHITESPACE@[25; 26) "\n" 17 WHITESPACE@25..26 "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast b/crates/ra_syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast
index 1b0acf47c..633b14000 100644
--- a/crates/ra_syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast
+++ b/crates/ra_syntax/test_data/parser/ok/0065_plus_after_fn_trait_bound.rast
@@ -1,61 +1,61 @@
1SOURCE_FILE@[0; 40) 1SOURCE_FILE@0..40
2 FN_DEF@[0; 39) 2 FN_DEF@0..39
3 FN_KW@[0; 2) "fn" 3 FN_KW@0..2 "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@2..3 " "
5 NAME@[3; 4) 5 NAME@3..4
6 IDENT@[3; 4) "f" 6 IDENT@3..4 "f"
7 TYPE_PARAM_LIST@[4; 7) 7 TYPE_PARAM_LIST@4..7
8 L_ANGLE@[4; 5) "<" 8 L_ANGLE@4..5 "<"
9 TYPE_PARAM@[5; 6) 9 TYPE_PARAM@5..6
10 NAME@[5; 6) 10 NAME@5..6
11 IDENT@[5; 6) "T" 11 IDENT@5..6 "T"
12 R_ANGLE@[6; 7) ">" 12 R_ANGLE@6..7 ">"
13 PARAM_LIST@[7; 9) 13 PARAM_LIST@7..9
14 L_PAREN@[7; 8) "(" 14 L_PAREN@7..8 "("
15 R_PAREN@[8; 9) ")" 15 R_PAREN@8..9 ")"
16 WHITESPACE@[9; 10) " " 16 WHITESPACE@9..10 " "
17 WHERE_CLAUSE@[10; 36) 17 WHERE_CLAUSE@10..36
18 WHERE_KW@[10; 15) "where" 18 WHERE_KW@10..15 "where"
19 WHITESPACE@[15; 16) " " 19 WHITESPACE@15..16 " "
20 WHERE_PRED@[16; 36) 20 WHERE_PRED@16..36
21 PATH_TYPE@[16; 17) 21 PATH_TYPE@16..17
22 PATH@[16; 17) 22 PATH@16..17
23 PATH_SEGMENT@[16; 17) 23 PATH_SEGMENT@16..17
24 NAME_REF@[16; 17) 24 NAME_REF@16..17
25 IDENT@[16; 17) "T" 25 IDENT@16..17 "T"
26 COLON@[17; 18) ":" 26 COLON@17..18 ":"
27 WHITESPACE@[18; 19) " " 27 WHITESPACE@18..19 " "
28 TYPE_BOUND_LIST@[19; 36) 28 TYPE_BOUND_LIST@19..36
29 TYPE_BOUND@[19; 29) 29 TYPE_BOUND@19..29
30 PATH_TYPE@[19; 29) 30 PATH_TYPE@19..29
31 PATH@[19; 29) 31 PATH@19..29
32 PATH_SEGMENT@[19; 29) 32 PATH_SEGMENT@19..29
33 NAME_REF@[19; 21) 33 NAME_REF@19..21
34 IDENT@[19; 21) "Fn" 34 IDENT@19..21 "Fn"
35 PARAM_LIST@[21; 23) 35 PARAM_LIST@21..23
36 L_PAREN@[21; 22) "(" 36 L_PAREN@21..22 "("
37 R_PAREN@[22; 23) ")" 37 R_PAREN@22..23 ")"
38 WHITESPACE@[23; 24) " " 38 WHITESPACE@23..24 " "
39 RET_TYPE@[24; 29) 39 RET_TYPE@24..29
40 THIN_ARROW@[24; 26) "->" 40 THIN_ARROW@24..26 "->"
41 WHITESPACE@[26; 27) " " 41 WHITESPACE@26..27 " "
42 PATH_TYPE@[27; 29) 42 PATH_TYPE@27..29
43 PATH@[27; 29) 43 PATH@27..29
44 PATH_SEGMENT@[27; 29) 44 PATH_SEGMENT@27..29
45 NAME_REF@[27; 29) 45 NAME_REF@27..29
46 IDENT@[27; 29) "u8" 46 IDENT@27..29 "u8"
47 WHITESPACE@[29; 30) " " 47 WHITESPACE@29..30 " "
48 PLUS@[30; 31) "+" 48 PLUS@30..31 "+"
49 WHITESPACE@[31; 32) " " 49 WHITESPACE@31..32 " "
50 TYPE_BOUND@[32; 36) 50 TYPE_BOUND@32..36
51 PATH_TYPE@[32; 36) 51 PATH_TYPE@32..36
52 PATH@[32; 36) 52 PATH@32..36
53 PATH_SEGMENT@[32; 36) 53 PATH_SEGMENT@32..36
54 NAME_REF@[32; 36) 54 NAME_REF@32..36
55 IDENT@[32; 36) "Send" 55 IDENT@32..36 "Send"
56 WHITESPACE@[36; 37) " " 56 WHITESPACE@36..37 " "
57 BLOCK_EXPR@[37; 39) 57 BLOCK_EXPR@37..39
58 BLOCK@[37; 39) 58 BLOCK@37..39
59 L_CURLY@[37; 38) "{" 59 L_CURLY@37..38 "{"
60 R_CURLY@[38; 39) "}" 60 R_CURLY@38..39 "}"
61 WHITESPACE@[39; 40) "\n" 61 WHITESPACE@39..40 "\n"