aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/test_data/parser/ok
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_syntax/test_data/parser/ok')
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.txt3
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.rs7
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.txt196
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.rs5
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.txt133
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.rs6
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.txt164
7 files changed, 513 insertions, 1 deletions
diff --git a/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.txt b/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.txt
index 719c99c17..254eafc36 100644
--- a/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.txt
+++ b/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.txt
@@ -118,7 +118,8 @@ SOURCE_FILE@[0; 519)
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 DOTDOTDOT@[114; 117) "..." 121 PARAM@[114; 117)
122 DOTDOTDOT@[114; 117) "..."
122 R_PAREN@[117; 118) ")" 123 R_PAREN@[117; 118) ")"
123 WHITESPACE@[118; 119) " " 124 WHITESPACE@[118; 119) " "
124 RET_TYPE@[119; 125) 125 RET_TYPE@[119; 125)
diff --git a/crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.rs b/crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.rs
new file mode 100644
index 000000000..3b666af8e
--- /dev/null
+++ b/crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.rs
@@ -0,0 +1,7 @@
1trait T {
2 fn f1((a, b): (usize, usize)) {}
3 fn f2(S { a, b }: S) {}
4 fn f3(NewType(a): NewType) {}
5 fn f4(&&a: &&usize) {}
6 fn bar(_: u64, mut x: i32);
7}
diff --git a/crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.txt b/crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.txt
new file mode 100644
index 000000000..eb2e3a503
--- /dev/null
+++ b/crates/ra_syntax/test_data/parser/ok/0063_trait_fn_patterns.txt
@@ -0,0 +1,196 @@
1SOURCE_FILE@[0; 170)
2 TRAIT_DEF@[0; 169)
3 TRAIT_KW@[0; 5) "trait"
4 WHITESPACE@[5; 6) " "
5 NAME@[6; 7)
6 IDENT@[6; 7) "T"
7 WHITESPACE@[7; 8) " "
8 ITEM_LIST@[8; 169)
9 L_CURLY@[8; 9) "{"
10 WHITESPACE@[9; 14) "\n "
11 FN_DEF@[14; 46)
12 FN_KW@[14; 16) "fn"
13 WHITESPACE@[16; 17) " "
14 NAME@[17; 19)
15 IDENT@[17; 19) "f1"
16 PARAM_LIST@[19; 43)
17 L_PAREN@[19; 20) "("
18 PARAM@[20; 42)
19 TUPLE_PAT@[20; 26)
20 L_PAREN@[20; 21) "("
21 BIND_PAT@[21; 22)
22 NAME@[21; 22)
23 IDENT@[21; 22) "a"
24 COMMA@[22; 23) ","
25 WHITESPACE@[23; 24) " "
26 BIND_PAT@[24; 25)
27 NAME@[24; 25)
28 IDENT@[24; 25) "b"
29 R_PAREN@[25; 26) ")"
30 COLON@[26; 27) ":"
31 WHITESPACE@[27; 28) " "
32 TUPLE_TYPE@[28; 42)
33 L_PAREN@[28; 29) "("
34 PATH_TYPE@[29; 34)
35 PATH@[29; 34)
36 PATH_SEGMENT@[29; 34)
37 NAME_REF@[29; 34)
38 IDENT@[29; 34) "usize"
39 COMMA@[34; 35) ","
40 WHITESPACE@[35; 36) " "
41 PATH_TYPE@[36; 41)
42 PATH@[36; 41)
43 PATH_SEGMENT@[36; 41)
44 NAME_REF@[36; 41)
45 IDENT@[36; 41) "usize"
46 R_PAREN@[41; 42) ")"
47 R_PAREN@[42; 43) ")"
48 WHITESPACE@[43; 44) " "
49 BLOCK_EXPR@[44; 46)
50 BLOCK@[44; 46)
51 L_CURLY@[44; 45) "{"
52 R_CURLY@[45; 46) "}"
53 WHITESPACE@[46; 51) "\n "
54 FN_DEF@[51; 74)
55 FN_KW@[51; 53) "fn"
56 WHITESPACE@[53; 54) " "
57 NAME@[54; 56)
58 IDENT@[54; 56) "f2"
59 PARAM_LIST@[56; 71)
60 L_PAREN@[56; 57) "("
61 PARAM@[57; 70)
62 RECORD_PAT@[57; 67)
63 PATH@[57; 58)
64 PATH_SEGMENT@[57; 58)
65 NAME_REF@[57; 58)
66 IDENT@[57; 58) "S"
67 WHITESPACE@[58; 59) " "
68 RECORD_FIELD_PAT_LIST@[59; 67)
69 L_CURLY@[59; 60) "{"
70 WHITESPACE@[60; 61) " "
71 BIND_PAT@[61; 62)
72 NAME@[61; 62)
73 IDENT@[61; 62) "a"
74 COMMA@[62; 63) ","
75 WHITESPACE@[63; 64) " "
76 BIND_PAT@[64; 65)
77 NAME@[64; 65)
78 IDENT@[64; 65) "b"
79 WHITESPACE@[65; 66) " "
80 R_CURLY@[66; 67) "}"
81 COLON@[67; 68) ":"
82 WHITESPACE@[68; 69) " "
83 PATH_TYPE@[69; 70)
84 PATH@[69; 70)
85 PATH_SEGMENT@[69; 70)
86 NAME_REF@[69; 70)
87 IDENT@[69; 70) "S"
88 R_PAREN@[70; 71) ")"
89 WHITESPACE@[71; 72) " "
90 BLOCK_EXPR@[72; 74)
91 BLOCK@[72; 74)
92 L_CURLY@[72; 73) "{"
93 R_CURLY@[73; 74) "}"
94 WHITESPACE@[74; 79) "\n "
95 FN_DEF@[79; 108)
96 FN_KW@[79; 81) "fn"
97 WHITESPACE@[81; 82) " "
98 NAME@[82; 84)
99 IDENT@[82; 84) "f3"
100 PARAM_LIST@[84; 105)
101 L_PAREN@[84; 85) "("
102 PARAM@[85; 104)
103 TUPLE_STRUCT_PAT@[85; 95)
104 PATH@[85; 92)
105 PATH_SEGMENT@[85; 92)
106 NAME_REF@[85; 92)
107 IDENT@[85; 92) "NewType"
108 L_PAREN@[92; 93) "("
109 BIND_PAT@[93; 94)
110 NAME@[93; 94)
111 IDENT@[93; 94) "a"
112 R_PAREN@[94; 95) ")"
113 COLON@[95; 96) ":"
114 WHITESPACE@[96; 97) " "
115 PATH_TYPE@[97; 104)
116 PATH@[97; 104)
117 PATH_SEGMENT@[97; 104)
118 NAME_REF@[97; 104)
119 IDENT@[97; 104) "NewType"
120 R_PAREN@[104; 105) ")"
121 WHITESPACE@[105; 106) " "
122 BLOCK_EXPR@[106; 108)
123 BLOCK@[106; 108)
124 L_CURLY@[106; 107) "{"
125 R_CURLY@[107; 108) "}"
126 WHITESPACE@[108; 113) "\n "
127 FN_DEF@[113; 135)
128 FN_KW@[113; 115) "fn"
129 WHITESPACE@[115; 116) " "
130 NAME@[116; 118)
131 IDENT@[116; 118) "f4"
132 PARAM_LIST@[118; 132)
133 L_PAREN@[118; 119) "("
134 PARAM@[119; 131)
135 REF_PAT@[119; 122)
136 AMP@[119; 120) "&"
137 REF_PAT@[120; 122)
138 AMP@[120; 121) "&"
139 BIND_PAT@[121; 122)
140 NAME@[121; 122)
141 IDENT@[121; 122) "a"
142 COLON@[122; 123) ":"
143 WHITESPACE@[123; 124) " "
144 REFERENCE_TYPE@[124; 131)
145 AMP@[124; 125) "&"
146 REFERENCE_TYPE@[125; 131)
147 AMP@[125; 126) "&"
148 PATH_TYPE@[126; 131)
149 PATH@[126; 131)
150 PATH_SEGMENT@[126; 131)
151 NAME_REF@[126; 131)
152 IDENT@[126; 131) "usize"
153 R_PAREN@[131; 132) ")"
154 WHITESPACE@[132; 133) " "
155 BLOCK_EXPR@[133; 135)
156 BLOCK@[133; 135)
157 L_CURLY@[133; 134) "{"
158 R_CURLY@[134; 135) "}"
159 WHITESPACE@[135; 140) "\n "
160 FN_DEF@[140; 167)
161 FN_KW@[140; 142) "fn"
162 WHITESPACE@[142; 143) " "
163 NAME@[143; 146)
164 IDENT@[143; 146) "bar"
165 PARAM_LIST@[146; 166)
166 L_PAREN@[146; 147) "("
167 PARAM@[147; 153)
168 PLACEHOLDER_PAT@[147; 148)
169 UNDERSCORE@[147; 148) "_"
170 COLON@[148; 149) ":"
171 WHITESPACE@[149; 150) " "
172 PATH_TYPE@[150; 153)
173 PATH@[150; 153)
174 PATH_SEGMENT@[150; 153)
175 NAME_REF@[150; 153)
176 IDENT@[150; 153) "u64"
177 COMMA@[153; 154) ","
178 WHITESPACE@[154; 155) " "
179 PARAM@[155; 165)
180 BIND_PAT@[155; 160)
181 MUT_KW@[155; 158) "mut"
182 WHITESPACE@[158; 159) " "
183 NAME@[159; 160)
184 IDENT@[159; 160) "x"
185 COLON@[160; 161) ":"
186 WHITESPACE@[161; 162) " "
187 PATH_TYPE@[162; 165)
188 PATH@[162; 165)
189 PATH_SEGMENT@[162; 165)
190 NAME_REF@[162; 165)
191 IDENT@[162; 165) "i32"
192 R_PAREN@[165; 166) ")"
193 SEMI@[166; 167) ";"
194 WHITESPACE@[167; 168) "\n"
195 R_CURLY@[168; 169) "}"
196 WHITESPACE@[169; 170) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.rs b/crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.rs
new file mode 100644
index 000000000..a16afbaf3
--- /dev/null
+++ b/crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.rs
@@ -0,0 +1,5 @@
1extern "C" {
2 fn a(_: *mut u8, ...,);
3 fn b(_: *mut u8, _: ...);
4 fn c(_: *mut u8, #[cfg(never)] [w, t, f]: ...,);
5}
diff --git a/crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.txt b/crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.txt
new file mode 100644
index 000000000..186f03626
--- /dev/null
+++ b/crates/ra_syntax/test_data/parser/ok/0063_variadic_fun.txt
@@ -0,0 +1,133 @@
1SOURCE_FILE@[0; 126)
2 EXTERN_BLOCK@[0; 125)
3 ABI@[0; 10)
4 EXTERN_KW@[0; 6) "extern"
5 WHITESPACE@[6; 7) " "
6 STRING@[7; 10) "\"C\""
7 WHITESPACE@[10; 11) " "
8 EXTERN_ITEM_LIST@[11; 125)
9 L_CURLY@[11; 12) "{"
10 WHITESPACE@[12; 17) "\n "
11 FN_DEF@[17; 40)
12 FN_KW@[17; 19) "fn"
13 WHITESPACE@[19; 20) " "
14 NAME@[20; 21)
15 IDENT@[20; 21) "a"
16 PARAM_LIST@[21; 39)
17 L_PAREN@[21; 22) "("
18 PARAM@[22; 32)
19 PLACEHOLDER_PAT@[22; 23)
20 UNDERSCORE@[22; 23) "_"
21 COLON@[23; 24) ":"
22 WHITESPACE@[24; 25) " "
23 POINTER_TYPE@[25; 32)
24 STAR@[25; 26) "*"
25 MUT_KW@[26; 29) "mut"
26 WHITESPACE@[29; 30) " "
27 PATH_TYPE@[30; 32)
28 PATH@[30; 32)
29 PATH_SEGMENT@[30; 32)
30 NAME_REF@[30; 32)
31 IDENT@[30; 32) "u8"
32 COMMA@[32; 33) ","
33 WHITESPACE@[33; 34) " "
34 PARAM@[34; 37)
35 DOTDOTDOT@[34; 37) "..."
36 COMMA@[37; 38) ","
37 R_PAREN@[38; 39) ")"
38 SEMI@[39; 40) ";"
39 WHITESPACE@[40; 45) "\n "
40 FN_DEF@[45; 70)
41 FN_KW@[45; 47) "fn"
42 WHITESPACE@[47; 48) " "
43 NAME@[48; 49)
44 IDENT@[48; 49) "b"
45 PARAM_LIST@[49; 69)
46 L_PAREN@[49; 50) "("
47 PARAM@[50; 60)
48 PLACEHOLDER_PAT@[50; 51)
49 UNDERSCORE@[50; 51) "_"
50 COLON@[51; 52) ":"
51 WHITESPACE@[52; 53) " "
52 POINTER_TYPE@[53; 60)
53 STAR@[53; 54) "*"
54 MUT_KW@[54; 57) "mut"
55 WHITESPACE@[57; 58) " "
56 PATH_TYPE@[58; 60)
57 PATH@[58; 60)
58 PATH_SEGMENT@[58; 60)
59 NAME_REF@[58; 60)
60 IDENT@[58; 60) "u8"
61 COMMA@[60; 61) ","
62 WHITESPACE@[61; 62) " "
63 PARAM@[62; 68)
64 PLACEHOLDER_PAT@[62; 63)
65 UNDERSCORE@[62; 63) "_"
66 COLON@[63; 64) ":"
67 WHITESPACE@[64; 65) " "
68 DOTDOTDOT@[65; 68) "..."
69 R_PAREN@[68; 69) ")"
70 SEMI@[69; 70) ";"
71 WHITESPACE@[70; 75) "\n "
72 FN_DEF@[75; 123)
73 FN_KW@[75; 77) "fn"
74 WHITESPACE@[77; 78) " "
75 NAME@[78; 79)
76 IDENT@[78; 79) "c"
77 PARAM_LIST@[79; 122)
78 L_PAREN@[79; 80) "("
79 PARAM@[80; 90)
80 PLACEHOLDER_PAT@[80; 81)
81 UNDERSCORE@[80; 81) "_"
82 COLON@[81; 82) ":"
83 WHITESPACE@[82; 83) " "
84 POINTER_TYPE@[83; 90)
85 STAR@[83; 84) "*"
86 MUT_KW@[84; 87) "mut"
87 WHITESPACE@[87; 88) " "
88 PATH_TYPE@[88; 90)
89 PATH@[88; 90)
90 PATH_SEGMENT@[88; 90)
91 NAME_REF@[88; 90)
92 IDENT@[88; 90) "u8"
93 COMMA@[90; 91) ","
94 WHITESPACE@[91; 92) " "
95 ATTR@[92; 105)
96 POUND@[92; 93) "#"
97 L_BRACK@[93; 94) "["
98 PATH@[94; 97)
99 PATH_SEGMENT@[94; 97)
100 NAME_REF@[94; 97)
101 IDENT@[94; 97) "cfg"
102 TOKEN_TREE@[97; 104)
103 L_PAREN@[97; 98) "("
104 IDENT@[98; 103) "never"
105 R_PAREN@[103; 104) ")"
106 R_BRACK@[104; 105) "]"
107 WHITESPACE@[105; 106) " "
108 PARAM@[106; 120)
109 SLICE_PAT@[106; 115)
110 L_BRACK@[106; 107) "["
111 BIND_PAT@[107; 108)
112 NAME@[107; 108)
113 IDENT@[107; 108) "w"
114 COMMA@[108; 109) ","
115 WHITESPACE@[109; 110) " "
116 BIND_PAT@[110; 111)
117 NAME@[110; 111)
118 IDENT@[110; 111) "t"
119 COMMA@[111; 112) ","
120 WHITESPACE@[112; 113) " "
121 BIND_PAT@[113; 114)
122 NAME@[113; 114)
123 IDENT@[113; 114) "f"
124 R_BRACK@[114; 115) "]"
125 COLON@[115; 116) ":"
126 WHITESPACE@[116; 117) " "
127 DOTDOTDOT@[117; 120) "..."
128 COMMA@[120; 121) ","
129 R_PAREN@[121; 122) ")"
130 SEMI@[122; 123) ";"
131 WHITESPACE@[123; 124) "\n"
132 R_CURLY@[124; 125) "}"
133 WHITESPACE@[125; 126) "\n"
diff --git a/crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.rs b/crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.rs
new file mode 100644
index 000000000..b49e872d7
--- /dev/null
+++ b/crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.rs
@@ -0,0 +1,6 @@
1impl U {
2 fn f1((a, b): (usize, usize)) {}
3 fn f2(S { a, b }: S) {}
4 fn f3(NewType(a): NewType) {}
5 fn f4(&&a: &&usize) {}
6}
diff --git a/crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.txt b/crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.txt
new file mode 100644
index 000000000..b30030de3
--- /dev/null
+++ b/crates/ra_syntax/test_data/parser/ok/0064_impl_fn_params.txt
@@ -0,0 +1,164 @@
1SOURCE_FILE@[0; 137)
2 IMPL_DEF@[0; 136)
3 IMPL_KW@[0; 4) "impl"
4 WHITESPACE@[4; 5) " "
5 PATH_TYPE@[5; 6)
6 PATH@[5; 6)
7 PATH_SEGMENT@[5; 6)
8 NAME_REF@[5; 6)
9 IDENT@[5; 6) "U"
10 WHITESPACE@[6; 7) " "
11 ITEM_LIST@[7; 136)
12 L_CURLY@[7; 8) "{"
13 WHITESPACE@[8; 13) "\n "
14 FN_DEF@[13; 45)
15 FN_KW@[13; 15) "fn"
16 WHITESPACE@[15; 16) " "
17 NAME@[16; 18)
18 IDENT@[16; 18) "f1"
19 PARAM_LIST@[18; 42)
20 L_PAREN@[18; 19) "("
21 PARAM@[19; 41)
22 TUPLE_PAT@[19; 25)
23 L_PAREN@[19; 20) "("
24 BIND_PAT@[20; 21)
25 NAME@[20; 21)
26 IDENT@[20; 21) "a"
27 COMMA@[21; 22) ","
28 WHITESPACE@[22; 23) " "
29 BIND_PAT@[23; 24)
30 NAME@[23; 24)
31 IDENT@[23; 24) "b"
32 R_PAREN@[24; 25) ")"
33 COLON@[25; 26) ":"
34 WHITESPACE@[26; 27) " "
35 TUPLE_TYPE@[27; 41)
36 L_PAREN@[27; 28) "("
37 PATH_TYPE@[28; 33)
38 PATH@[28; 33)
39 PATH_SEGMENT@[28; 33)
40 NAME_REF@[28; 33)
41 IDENT@[28; 33) "usize"
42 COMMA@[33; 34) ","
43 WHITESPACE@[34; 35) " "
44 PATH_TYPE@[35; 40)
45 PATH@[35; 40)
46 PATH_SEGMENT@[35; 40)
47 NAME_REF@[35; 40)
48 IDENT@[35; 40) "usize"
49 R_PAREN@[40; 41) ")"
50 R_PAREN@[41; 42) ")"
51 WHITESPACE@[42; 43) " "
52 BLOCK_EXPR@[43; 45)
53 BLOCK@[43; 45)
54 L_CURLY@[43; 44) "{"
55 R_CURLY@[44; 45) "}"
56 WHITESPACE@[45; 50) "\n "
57 FN_DEF@[50; 73)
58 FN_KW@[50; 52) "fn"
59 WHITESPACE@[52; 53) " "
60 NAME@[53; 55)
61 IDENT@[53; 55) "f2"
62 PARAM_LIST@[55; 70)
63 L_PAREN@[55; 56) "("
64 PARAM@[56; 69)
65 RECORD_PAT@[56; 66)
66 PATH@[56; 57)
67 PATH_SEGMENT@[56; 57)
68 NAME_REF@[56; 57)
69 IDENT@[56; 57) "S"
70 WHITESPACE@[57; 58) " "
71 RECORD_FIELD_PAT_LIST@[58; 66)
72 L_CURLY@[58; 59) "{"
73 WHITESPACE@[59; 60) " "
74 BIND_PAT@[60; 61)
75 NAME@[60; 61)
76 IDENT@[60; 61) "a"
77 COMMA@[61; 62) ","
78 WHITESPACE@[62; 63) " "
79 BIND_PAT@[63; 64)
80 NAME@[63; 64)
81 IDENT@[63; 64) "b"
82 WHITESPACE@[64; 65) " "
83 R_CURLY@[65; 66) "}"
84 COLON@[66; 67) ":"
85 WHITESPACE@[67; 68) " "
86 PATH_TYPE@[68; 69)
87 PATH@[68; 69)
88 PATH_SEGMENT@[68; 69)
89 NAME_REF@[68; 69)
90 IDENT@[68; 69) "S"
91 R_PAREN@[69; 70) ")"
92 WHITESPACE@[70; 71) " "
93 BLOCK_EXPR@[71; 73)
94 BLOCK@[71; 73)
95 L_CURLY@[71; 72) "{"
96 R_CURLY@[72; 73) "}"
97 WHITESPACE@[73; 78) "\n "
98 FN_DEF@[78; 107)
99 FN_KW@[78; 80) "fn"
100 WHITESPACE@[80; 81) " "
101 NAME@[81; 83)
102 IDENT@[81; 83) "f3"
103 PARAM_LIST@[83; 104)
104 L_PAREN@[83; 84) "("
105 PARAM@[84; 103)
106 TUPLE_STRUCT_PAT@[84; 94)
107 PATH@[84; 91)
108 PATH_SEGMENT@[84; 91)
109 NAME_REF@[84; 91)
110 IDENT@[84; 91) "NewType"
111 L_PAREN@[91; 92) "("
112 BIND_PAT@[92; 93)
113 NAME@[92; 93)
114 IDENT@[92; 93) "a"
115 R_PAREN@[93; 94) ")"
116 COLON@[94; 95) ":"
117 WHITESPACE@[95; 96) " "
118 PATH_TYPE@[96; 103)
119 PATH@[96; 103)
120 PATH_SEGMENT@[96; 103)
121 NAME_REF@[96; 103)
122 IDENT@[96; 103) "NewType"
123 R_PAREN@[103; 104) ")"
124 WHITESPACE@[104; 105) " "
125 BLOCK_EXPR@[105; 107)
126 BLOCK@[105; 107)
127 L_CURLY@[105; 106) "{"
128 R_CURLY@[106; 107) "}"
129 WHITESPACE@[107; 112) "\n "
130 FN_DEF@[112; 134)
131 FN_KW@[112; 114) "fn"
132 WHITESPACE@[114; 115) " "
133 NAME@[115; 117)
134 IDENT@[115; 117) "f4"
135 PARAM_LIST@[117; 131)
136 L_PAREN@[117; 118) "("
137 PARAM@[118; 130)
138 REF_PAT@[118; 121)
139 AMP@[118; 119) "&"
140 REF_PAT@[119; 121)
141 AMP@[119; 120) "&"
142 BIND_PAT@[120; 121)
143 NAME@[120; 121)
144 IDENT@[120; 121) "a"
145 COLON@[121; 122) ":"
146 WHITESPACE@[122; 123) " "
147 REFERENCE_TYPE@[123; 130)
148 AMP@[123; 124) "&"
149 REFERENCE_TYPE@[124; 130)
150 AMP@[124; 125) "&"
151 PATH_TYPE@[125; 130)
152 PATH@[125; 130)
153 PATH_SEGMENT@[125; 130)
154 NAME_REF@[125; 130)
155 IDENT@[125; 130) "usize"
156 R_PAREN@[130; 131) ")"
157 WHITESPACE@[131; 132) " "
158 BLOCK_EXPR@[132; 134)
159 BLOCK@[132; 134)
160 L_CURLY@[132; 133) "{"
161 R_CURLY@[133; 134) "}"
162 WHITESPACE@[134; 135) "\n"
163 R_CURLY@[135; 136) "}"
164 WHITESPACE@[136; 137) "\n"