diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2019-09-15 08:10:16 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2019-09-15 08:10:16 +0100 |
commit | 2d79a1ad83cc39075c7c9e3230973013c8c58b17 (patch) | |
tree | e394007f715f8586c737db8f20f2d8f16f8913af /crates/ra_syntax/test_data/parser/inline | |
parent | bcdba777bdc43762cff73ac3ded4ae737a503692 (diff) | |
parent | 0956323bb7b728da6bff4ad7241a542f4bb4e8e6 (diff) |
Merge #1848
1848: Parse `..` as a full pattern r=matklad a=ecstatic-morse
Resolves #1479.
This PR implements [RFC 2707](https://github.com/rust-lang/rfcs/pull/2707) in the parser. It introduces a new `DotDotPat` AST node modeled on `PlaceholderPat` and changes the parsing of tuple and slice patterns to conform to the RFC.
Notably, this PR does *not* change the resulting AST when `..` appears in a struct pattern (e.g. `Struct { a, b: c, .. }`). I *think* this is the behavior mandated by RFC 2707, but someone should confirm this.
Co-authored-by: Dylan MacKenzie <[email protected]>
Diffstat (limited to 'crates/ra_syntax/test_data/parser/inline')
6 files changed, 489 insertions, 4 deletions
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.txt b/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.txt index 80bb7733c..3812adc9e 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.txt +++ b/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.txt | |||
@@ -82,7 +82,8 @@ SOURCE_FILE@[0; 103) | |||
82 | NAME_REF@[87; 90) | 82 | NAME_REF@[87; 90) |
83 | IDENT@[87; 90) "Bar" | 83 | IDENT@[87; 90) "Bar" |
84 | L_PAREN@[90; 91) "(" | 84 | L_PAREN@[90; 91) "(" |
85 | DOTDOT@[91; 93) ".." | 85 | DOT_DOT_PAT@[91; 93) |
86 | DOTDOT@[91; 93) ".." | ||
86 | R_PAREN@[93; 94) ")" | 87 | R_PAREN@[93; 94) ")" |
87 | WHITESPACE@[94; 95) " " | 88 | WHITESPACE@[94; 95) " " |
88 | EQ@[95; 96) "=" | 89 | EQ@[95; 96) "=" |
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.txt b/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.txt index c1d669e54..48aaeaf07 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.txt +++ b/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.txt | |||
@@ -27,7 +27,8 @@ SOURCE_FILE@[0; 39) | |||
27 | IDENT@[24; 25) "b" | 27 | IDENT@[24; 25) "b" |
28 | COMMA@[25; 26) "," | 28 | COMMA@[25; 26) "," |
29 | WHITESPACE@[26; 27) " " | 29 | WHITESPACE@[26; 27) " " |
30 | DOTDOT@[27; 29) ".." | 30 | DOT_DOT_PAT@[27; 29) |
31 | DOTDOT@[27; 29) ".." | ||
31 | R_BRACK@[29; 30) "]" | 32 | R_BRACK@[29; 30) "]" |
32 | WHITESPACE@[30; 31) " " | 33 | WHITESPACE@[30; 31) " " |
33 | EQ@[31; 32) "=" | 34 | EQ@[31; 32) "=" |
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.txt b/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.txt index adc8931e2..666386d31 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.txt +++ b/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.txt | |||
@@ -84,7 +84,8 @@ SOURCE_FILE@[0; 97) | |||
84 | UNDERSCORE@[78; 79) "_" | 84 | UNDERSCORE@[78; 79) "_" |
85 | COMMA@[79; 80) "," | 85 | COMMA@[79; 80) "," |
86 | WHITESPACE@[80; 81) " " | 86 | WHITESPACE@[80; 81) " " |
87 | DOTDOT@[81; 83) ".." | 87 | DOT_DOT_PAT@[81; 83) |
88 | DOTDOT@[81; 83) ".." | ||
88 | WHITESPACE@[83; 84) " " | 89 | WHITESPACE@[83; 84) " " |
89 | COMMA@[84; 85) "," | 90 | COMMA@[84; 85) "," |
90 | WHITESPACE@[85; 86) " " | 91 | WHITESPACE@[85; 86) " " |
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.txt b/crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.txt index 3fee3a1cf..674dec493 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.txt +++ b/crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.txt | |||
@@ -27,7 +27,8 @@ SOURCE_FILE@[0; 39) | |||
27 | IDENT@[24; 25) "b" | 27 | IDENT@[24; 25) "b" |
28 | COMMA@[25; 26) "," | 28 | COMMA@[25; 26) "," |
29 | WHITESPACE@[26; 27) " " | 29 | WHITESPACE@[26; 27) " " |
30 | DOTDOT@[27; 29) ".." | 30 | DOT_DOT_PAT@[27; 29) |
31 | DOTDOT@[27; 29) ".." | ||
31 | R_PAREN@[29; 30) ")" | 32 | R_PAREN@[29; 30) ")" |
32 | WHITESPACE@[30; 31) " " | 33 | WHITESPACE@[30; 31) " " |
33 | EQ@[31; 32) "=" | 34 | EQ@[31; 32) "=" |
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rs b/crates/ra_syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rs new file mode 100644 index 000000000..3262f27e1 --- /dev/null +++ b/crates/ra_syntax/test_data/parser/inline/ok/0144_dot_dot_pat.rs | |||
@@ -0,0 +1,25 @@ | |||
1 | fn main() { | ||
2 | let .. = (); | ||
3 | // | ||
4 | // Tuples | ||
5 | // | ||
6 | let (a, ..) = (); | ||
7 | let (a, ..,) = (); | ||
8 | let Tuple(a, ..) = (); | ||
9 | let Tuple(a, ..,) = (); | ||
10 | let (.., ..) = (); | ||
11 | let Tuple(.., ..) = (); | ||
12 | let (.., a, ..) = (); | ||
13 | let Tuple(.., a, ..) = (); | ||
14 | // | ||
15 | // Slices | ||
16 | // | ||
17 | let [..] = (); | ||
18 | let [head, ..] = (); | ||
19 | let [head, tail @ ..] = (); | ||
20 | let [head, .., cons] = (); | ||
21 | let [head, mid @ .., cons] = (); | ||
22 | let [head, .., .., cons] = (); | ||
23 | let [head, .., mid, tail @ ..] = (); | ||
24 | let [head, .., mid, .., cons] = (); | ||
25 | } | ||
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0144_dot_dot_pat.txt b/crates/ra_syntax/test_data/parser/inline/ok/0144_dot_dot_pat.txt new file mode 100644 index 000000000..325b1bd08 --- /dev/null +++ b/crates/ra_syntax/test_data/parser/inline/ok/0144_dot_dot_pat.txt | |||
@@ -0,0 +1,456 @@ | |||
1 | SOURCE_FILE@[0; 555) | ||
2 | FN_DEF@[0; 554) | ||
3 | FN_KW@[0; 2) "fn" | ||
4 | WHITESPACE@[2; 3) " " | ||
5 | NAME@[3; 7) | ||
6 | IDENT@[3; 7) "main" | ||
7 | PARAM_LIST@[7; 9) | ||
8 | L_PAREN@[7; 8) "(" | ||
9 | R_PAREN@[8; 9) ")" | ||
10 | WHITESPACE@[9; 10) " " | ||
11 | BLOCK_EXPR@[10; 554) | ||
12 | BLOCK@[10; 554) | ||
13 | L_CURLY@[10; 11) "{" | ||
14 | WHITESPACE@[11; 16) "\n " | ||
15 | LET_STMT@[16; 28) | ||
16 | LET_KW@[16; 19) "let" | ||
17 | WHITESPACE@[19; 20) " " | ||
18 | DOT_DOT_PAT@[20; 22) | ||
19 | DOTDOT@[20; 22) ".." | ||
20 | WHITESPACE@[22; 23) " " | ||
21 | EQ@[23; 24) "=" | ||
22 | WHITESPACE@[24; 25) " " | ||
23 | TUPLE_EXPR@[25; 27) | ||
24 | L_PAREN@[25; 26) "(" | ||
25 | R_PAREN@[26; 27) ")" | ||
26 | SEMI@[27; 28) ";" | ||
27 | WHITESPACE@[28; 33) "\n " | ||
28 | COMMENT@[33; 35) "//" | ||
29 | WHITESPACE@[35; 40) "\n " | ||
30 | COMMENT@[40; 49) "// Tuples" | ||
31 | WHITESPACE@[49; 54) "\n " | ||
32 | COMMENT@[54; 56) "//" | ||
33 | WHITESPACE@[56; 61) "\n " | ||
34 | LET_STMT@[61; 78) | ||
35 | LET_KW@[61; 64) "let" | ||
36 | WHITESPACE@[64; 65) " " | ||
37 | TUPLE_PAT@[65; 72) | ||
38 | L_PAREN@[65; 66) "(" | ||
39 | BIND_PAT@[66; 67) | ||
40 | NAME@[66; 67) | ||
41 | IDENT@[66; 67) "a" | ||
42 | COMMA@[67; 68) "," | ||
43 | WHITESPACE@[68; 69) " " | ||
44 | DOT_DOT_PAT@[69; 71) | ||
45 | DOTDOT@[69; 71) ".." | ||
46 | R_PAREN@[71; 72) ")" | ||
47 | WHITESPACE@[72; 73) " " | ||
48 | EQ@[73; 74) "=" | ||
49 | WHITESPACE@[74; 75) " " | ||
50 | TUPLE_EXPR@[75; 77) | ||
51 | L_PAREN@[75; 76) "(" | ||
52 | R_PAREN@[76; 77) ")" | ||
53 | SEMI@[77; 78) ";" | ||
54 | WHITESPACE@[78; 83) "\n " | ||
55 | LET_STMT@[83; 101) | ||
56 | LET_KW@[83; 86) "let" | ||
57 | WHITESPACE@[86; 87) " " | ||
58 | TUPLE_PAT@[87; 95) | ||
59 | L_PAREN@[87; 88) "(" | ||
60 | BIND_PAT@[88; 89) | ||
61 | NAME@[88; 89) | ||
62 | IDENT@[88; 89) "a" | ||
63 | COMMA@[89; 90) "," | ||
64 | WHITESPACE@[90; 91) " " | ||
65 | DOT_DOT_PAT@[91; 93) | ||
66 | DOTDOT@[91; 93) ".." | ||
67 | COMMA@[93; 94) "," | ||
68 | R_PAREN@[94; 95) ")" | ||
69 | WHITESPACE@[95; 96) " " | ||
70 | EQ@[96; 97) "=" | ||
71 | WHITESPACE@[97; 98) " " | ||
72 | TUPLE_EXPR@[98; 100) | ||
73 | L_PAREN@[98; 99) "(" | ||
74 | R_PAREN@[99; 100) ")" | ||
75 | SEMI@[100; 101) ";" | ||
76 | WHITESPACE@[101; 106) "\n " | ||
77 | LET_STMT@[106; 128) | ||
78 | LET_KW@[106; 109) "let" | ||
79 | WHITESPACE@[109; 110) " " | ||
80 | TUPLE_STRUCT_PAT@[110; 122) | ||
81 | PATH@[110; 115) | ||
82 | PATH_SEGMENT@[110; 115) | ||
83 | NAME_REF@[110; 115) | ||
84 | IDENT@[110; 115) "Tuple" | ||
85 | L_PAREN@[115; 116) "(" | ||
86 | BIND_PAT@[116; 117) | ||
87 | NAME@[116; 117) | ||
88 | IDENT@[116; 117) "a" | ||
89 | COMMA@[117; 118) "," | ||
90 | WHITESPACE@[118; 119) " " | ||
91 | DOT_DOT_PAT@[119; 121) | ||
92 | DOTDOT@[119; 121) ".." | ||
93 | R_PAREN@[121; 122) ")" | ||
94 | WHITESPACE@[122; 123) " " | ||
95 | EQ@[123; 124) "=" | ||
96 | WHITESPACE@[124; 125) " " | ||
97 | TUPLE_EXPR@[125; 127) | ||
98 | L_PAREN@[125; 126) "(" | ||
99 | R_PAREN@[126; 127) ")" | ||
100 | SEMI@[127; 128) ";" | ||
101 | WHITESPACE@[128; 133) "\n " | ||
102 | LET_STMT@[133; 156) | ||
103 | LET_KW@[133; 136) "let" | ||
104 | WHITESPACE@[136; 137) " " | ||
105 | TUPLE_STRUCT_PAT@[137; 150) | ||
106 | PATH@[137; 142) | ||
107 | PATH_SEGMENT@[137; 142) | ||
108 | NAME_REF@[137; 142) | ||
109 | IDENT@[137; 142) "Tuple" | ||
110 | L_PAREN@[142; 143) "(" | ||
111 | BIND_PAT@[143; 144) | ||
112 | NAME@[143; 144) | ||
113 | IDENT@[143; 144) "a" | ||
114 | COMMA@[144; 145) "," | ||
115 | WHITESPACE@[145; 146) " " | ||
116 | DOT_DOT_PAT@[146; 148) | ||
117 | DOTDOT@[146; 148) ".." | ||
118 | COMMA@[148; 149) "," | ||
119 | R_PAREN@[149; 150) ")" | ||
120 | WHITESPACE@[150; 151) " " | ||
121 | EQ@[151; 152) "=" | ||
122 | WHITESPACE@[152; 153) " " | ||
123 | TUPLE_EXPR@[153; 155) | ||
124 | L_PAREN@[153; 154) "(" | ||
125 | R_PAREN@[154; 155) ")" | ||
126 | SEMI@[155; 156) ";" | ||
127 | WHITESPACE@[156; 161) "\n " | ||
128 | LET_STMT@[161; 179) | ||
129 | LET_KW@[161; 164) "let" | ||
130 | WHITESPACE@[164; 165) " " | ||
131 | TUPLE_PAT@[165; 173) | ||
132 | L_PAREN@[165; 166) "(" | ||
133 | DOT_DOT_PAT@[166; 168) | ||
134 | DOTDOT@[166; 168) ".." | ||
135 | COMMA@[168; 169) "," | ||
136 | WHITESPACE@[169; 170) " " | ||
137 | DOT_DOT_PAT@[170; 172) | ||
138 | DOTDOT@[170; 172) ".." | ||
139 | R_PAREN@[172; 173) ")" | ||
140 | WHITESPACE@[173; 174) " " | ||
141 | EQ@[174; 175) "=" | ||
142 | WHITESPACE@[175; 176) " " | ||
143 | TUPLE_EXPR@[176; 178) | ||
144 | L_PAREN@[176; 177) "(" | ||
145 | R_PAREN@[177; 178) ")" | ||
146 | SEMI@[178; 179) ";" | ||
147 | WHITESPACE@[179; 184) "\n " | ||
148 | LET_STMT@[184; 207) | ||
149 | LET_KW@[184; 187) "let" | ||
150 | WHITESPACE@[187; 188) " " | ||
151 | TUPLE_STRUCT_PAT@[188; 201) | ||
152 | PATH@[188; 193) | ||
153 | PATH_SEGMENT@[188; 193) | ||
154 | NAME_REF@[188; 193) | ||
155 | IDENT@[188; 193) "Tuple" | ||
156 | L_PAREN@[193; 194) "(" | ||
157 | DOT_DOT_PAT@[194; 196) | ||
158 | DOTDOT@[194; 196) ".." | ||
159 | COMMA@[196; 197) "," | ||
160 | WHITESPACE@[197; 198) " " | ||
161 | DOT_DOT_PAT@[198; 200) | ||
162 | DOTDOT@[198; 200) ".." | ||
163 | R_PAREN@[200; 201) ")" | ||
164 | WHITESPACE@[201; 202) " " | ||
165 | EQ@[202; 203) "=" | ||
166 | WHITESPACE@[203; 204) " " | ||
167 | TUPLE_EXPR@[204; 206) | ||
168 | L_PAREN@[204; 205) "(" | ||
169 | R_PAREN@[205; 206) ")" | ||
170 | SEMI@[206; 207) ";" | ||
171 | WHITESPACE@[207; 212) "\n " | ||
172 | LET_STMT@[212; 233) | ||
173 | LET_KW@[212; 215) "let" | ||
174 | WHITESPACE@[215; 216) " " | ||
175 | TUPLE_PAT@[216; 227) | ||
176 | L_PAREN@[216; 217) "(" | ||
177 | DOT_DOT_PAT@[217; 219) | ||
178 | DOTDOT@[217; 219) ".." | ||
179 | COMMA@[219; 220) "," | ||
180 | WHITESPACE@[220; 221) " " | ||
181 | BIND_PAT@[221; 222) | ||
182 | NAME@[221; 222) | ||
183 | IDENT@[221; 222) "a" | ||
184 | COMMA@[222; 223) "," | ||
185 | WHITESPACE@[223; 224) " " | ||
186 | DOT_DOT_PAT@[224; 226) | ||
187 | DOTDOT@[224; 226) ".." | ||
188 | R_PAREN@[226; 227) ")" | ||
189 | WHITESPACE@[227; 228) " " | ||
190 | EQ@[228; 229) "=" | ||
191 | WHITESPACE@[229; 230) " " | ||
192 | TUPLE_EXPR@[230; 232) | ||
193 | L_PAREN@[230; 231) "(" | ||
194 | R_PAREN@[231; 232) ")" | ||
195 | SEMI@[232; 233) ";" | ||
196 | WHITESPACE@[233; 238) "\n " | ||
197 | LET_STMT@[238; 264) | ||
198 | LET_KW@[238; 241) "let" | ||
199 | WHITESPACE@[241; 242) " " | ||
200 | TUPLE_STRUCT_PAT@[242; 258) | ||
201 | PATH@[242; 247) | ||
202 | PATH_SEGMENT@[242; 247) | ||
203 | NAME_REF@[242; 247) | ||
204 | IDENT@[242; 247) "Tuple" | ||
205 | L_PAREN@[247; 248) "(" | ||
206 | DOT_DOT_PAT@[248; 250) | ||
207 | DOTDOT@[248; 250) ".." | ||
208 | COMMA@[250; 251) "," | ||
209 | WHITESPACE@[251; 252) " " | ||
210 | BIND_PAT@[252; 253) | ||
211 | NAME@[252; 253) | ||
212 | IDENT@[252; 253) "a" | ||
213 | COMMA@[253; 254) "," | ||
214 | WHITESPACE@[254; 255) " " | ||
215 | DOT_DOT_PAT@[255; 257) | ||
216 | DOTDOT@[255; 257) ".." | ||
217 | R_PAREN@[257; 258) ")" | ||
218 | WHITESPACE@[258; 259) " " | ||
219 | EQ@[259; 260) "=" | ||
220 | WHITESPACE@[260; 261) " " | ||
221 | TUPLE_EXPR@[261; 263) | ||
222 | L_PAREN@[261; 262) "(" | ||
223 | R_PAREN@[262; 263) ")" | ||
224 | SEMI@[263; 264) ";" | ||
225 | WHITESPACE@[264; 269) "\n " | ||
226 | COMMENT@[269; 271) "//" | ||
227 | WHITESPACE@[271; 276) "\n " | ||
228 | COMMENT@[276; 285) "// Slices" | ||
229 | WHITESPACE@[285; 290) "\n " | ||
230 | COMMENT@[290; 292) "//" | ||
231 | WHITESPACE@[292; 297) "\n " | ||
232 | LET_STMT@[297; 311) | ||
233 | LET_KW@[297; 300) "let" | ||
234 | WHITESPACE@[300; 301) " " | ||
235 | SLICE_PAT@[301; 305) | ||
236 | L_BRACK@[301; 302) "[" | ||
237 | DOT_DOT_PAT@[302; 304) | ||
238 | DOTDOT@[302; 304) ".." | ||
239 | R_BRACK@[304; 305) "]" | ||
240 | WHITESPACE@[305; 306) " " | ||
241 | EQ@[306; 307) "=" | ||
242 | WHITESPACE@[307; 308) " " | ||
243 | TUPLE_EXPR@[308; 310) | ||
244 | L_PAREN@[308; 309) "(" | ||
245 | R_PAREN@[309; 310) ")" | ||
246 | SEMI@[310; 311) ";" | ||
247 | WHITESPACE@[311; 316) "\n " | ||
248 | LET_STMT@[316; 336) | ||
249 | LET_KW@[316; 319) "let" | ||
250 | WHITESPACE@[319; 320) " " | ||
251 | SLICE_PAT@[320; 330) | ||
252 | L_BRACK@[320; 321) "[" | ||
253 | BIND_PAT@[321; 325) | ||
254 | NAME@[321; 325) | ||
255 | IDENT@[321; 325) "head" | ||
256 | COMMA@[325; 326) "," | ||
257 | WHITESPACE@[326; 327) " " | ||
258 | DOT_DOT_PAT@[327; 329) | ||
259 | DOTDOT@[327; 329) ".." | ||
260 | R_BRACK@[329; 330) "]" | ||
261 | WHITESPACE@[330; 331) " " | ||
262 | EQ@[331; 332) "=" | ||
263 | WHITESPACE@[332; 333) " " | ||
264 | TUPLE_EXPR@[333; 335) | ||
265 | L_PAREN@[333; 334) "(" | ||
266 | R_PAREN@[334; 335) ")" | ||
267 | SEMI@[335; 336) ";" | ||
268 | WHITESPACE@[336; 341) "\n " | ||
269 | LET_STMT@[341; 368) | ||
270 | LET_KW@[341; 344) "let" | ||
271 | WHITESPACE@[344; 345) " " | ||
272 | SLICE_PAT@[345; 362) | ||
273 | L_BRACK@[345; 346) "[" | ||
274 | BIND_PAT@[346; 350) | ||
275 | NAME@[346; 350) | ||
276 | IDENT@[346; 350) "head" | ||
277 | COMMA@[350; 351) "," | ||
278 | WHITESPACE@[351; 352) " " | ||
279 | BIND_PAT@[352; 361) | ||
280 | NAME@[352; 356) | ||
281 | IDENT@[352; 356) "tail" | ||
282 | WHITESPACE@[356; 357) " " | ||
283 | AT@[357; 358) "@" | ||
284 | WHITESPACE@[358; 359) " " | ||
285 | DOT_DOT_PAT@[359; 361) | ||
286 | DOTDOT@[359; 361) ".." | ||
287 | R_BRACK@[361; 362) "]" | ||
288 | WHITESPACE@[362; 363) " " | ||
289 | EQ@[363; 364) "=" | ||
290 | WHITESPACE@[364; 365) " " | ||
291 | TUPLE_EXPR@[365; 367) | ||
292 | L_PAREN@[365; 366) "(" | ||
293 | R_PAREN@[366; 367) ")" | ||
294 | SEMI@[367; 368) ";" | ||
295 | WHITESPACE@[368; 373) "\n " | ||
296 | LET_STMT@[373; 399) | ||
297 | LET_KW@[373; 376) "let" | ||
298 | WHITESPACE@[376; 377) " " | ||
299 | SLICE_PAT@[377; 393) | ||
300 | L_BRACK@[377; 378) "[" | ||
301 | BIND_PAT@[378; 382) | ||
302 | NAME@[378; 382) | ||
303 | IDENT@[378; 382) "head" | ||
304 | COMMA@[382; 383) "," | ||
305 | WHITESPACE@[383; 384) " " | ||
306 | DOT_DOT_PAT@[384; 386) | ||
307 | DOTDOT@[384; 386) ".." | ||
308 | COMMA@[386; 387) "," | ||
309 | WHITESPACE@[387; 388) " " | ||
310 | BIND_PAT@[388; 392) | ||
311 | NAME@[388; 392) | ||
312 | IDENT@[388; 392) "cons" | ||
313 | R_BRACK@[392; 393) "]" | ||
314 | WHITESPACE@[393; 394) " " | ||
315 | EQ@[394; 395) "=" | ||
316 | WHITESPACE@[395; 396) " " | ||
317 | TUPLE_EXPR@[396; 398) | ||
318 | L_PAREN@[396; 397) "(" | ||
319 | R_PAREN@[397; 398) ")" | ||
320 | SEMI@[398; 399) ";" | ||
321 | WHITESPACE@[399; 404) "\n " | ||
322 | LET_STMT@[404; 436) | ||
323 | LET_KW@[404; 407) "let" | ||
324 | WHITESPACE@[407; 408) " " | ||
325 | SLICE_PAT@[408; 430) | ||
326 | L_BRACK@[408; 409) "[" | ||
327 | BIND_PAT@[409; 413) | ||
328 | NAME@[409; 413) | ||
329 | IDENT@[409; 413) "head" | ||
330 | COMMA@[413; 414) "," | ||
331 | WHITESPACE@[414; 415) " " | ||
332 | BIND_PAT@[415; 423) | ||
333 | NAME@[415; 418) | ||
334 | IDENT@[415; 418) "mid" | ||
335 | WHITESPACE@[418; 419) " " | ||
336 | AT@[419; 420) "@" | ||
337 | WHITESPACE@[420; 421) " " | ||
338 | DOT_DOT_PAT@[421; 423) | ||
339 | DOTDOT@[421; 423) ".." | ||
340 | COMMA@[423; 424) "," | ||
341 | WHITESPACE@[424; 425) " " | ||
342 | BIND_PAT@[425; 429) | ||
343 | NAME@[425; 429) | ||
344 | IDENT@[425; 429) "cons" | ||
345 | R_BRACK@[429; 430) "]" | ||
346 | WHITESPACE@[430; 431) " " | ||
347 | EQ@[431; 432) "=" | ||
348 | WHITESPACE@[432; 433) " " | ||
349 | TUPLE_EXPR@[433; 435) | ||
350 | L_PAREN@[433; 434) "(" | ||
351 | R_PAREN@[434; 435) ")" | ||
352 | SEMI@[435; 436) ";" | ||
353 | WHITESPACE@[436; 441) "\n " | ||
354 | LET_STMT@[441; 471) | ||
355 | LET_KW@[441; 444) "let" | ||
356 | WHITESPACE@[444; 445) " " | ||
357 | SLICE_PAT@[445; 465) | ||
358 | L_BRACK@[445; 446) "[" | ||
359 | BIND_PAT@[446; 450) | ||
360 | NAME@[446; 450) | ||
361 | IDENT@[446; 450) "head" | ||
362 | COMMA@[450; 451) "," | ||
363 | WHITESPACE@[451; 452) " " | ||
364 | DOT_DOT_PAT@[452; 454) | ||
365 | DOTDOT@[452; 454) ".." | ||
366 | COMMA@[454; 455) "," | ||
367 | WHITESPACE@[455; 456) " " | ||
368 | DOT_DOT_PAT@[456; 458) | ||
369 | DOTDOT@[456; 458) ".." | ||
370 | COMMA@[458; 459) "," | ||
371 | WHITESPACE@[459; 460) " " | ||
372 | BIND_PAT@[460; 464) | ||
373 | NAME@[460; 464) | ||
374 | IDENT@[460; 464) "cons" | ||
375 | R_BRACK@[464; 465) "]" | ||
376 | WHITESPACE@[465; 466) " " | ||
377 | EQ@[466; 467) "=" | ||
378 | WHITESPACE@[467; 468) " " | ||
379 | TUPLE_EXPR@[468; 470) | ||
380 | L_PAREN@[468; 469) "(" | ||
381 | R_PAREN@[469; 470) ")" | ||
382 | SEMI@[470; 471) ";" | ||
383 | WHITESPACE@[471; 476) "\n " | ||
384 | LET_STMT@[476; 512) | ||
385 | LET_KW@[476; 479) "let" | ||
386 | WHITESPACE@[479; 480) " " | ||
387 | SLICE_PAT@[480; 506) | ||
388 | L_BRACK@[480; 481) "[" | ||
389 | BIND_PAT@[481; 485) | ||
390 | NAME@[481; 485) | ||
391 | IDENT@[481; 485) "head" | ||
392 | COMMA@[485; 486) "," | ||
393 | WHITESPACE@[486; 487) " " | ||
394 | DOT_DOT_PAT@[487; 489) | ||
395 | DOTDOT@[487; 489) ".." | ||
396 | COMMA@[489; 490) "," | ||
397 | WHITESPACE@[490; 491) " " | ||
398 | BIND_PAT@[491; 494) | ||
399 | NAME@[491; 494) | ||
400 | IDENT@[491; 494) "mid" | ||
401 | COMMA@[494; 495) "," | ||
402 | WHITESPACE@[495; 496) " " | ||
403 | BIND_PAT@[496; 505) | ||
404 | NAME@[496; 500) | ||
405 | IDENT@[496; 500) "tail" | ||
406 | WHITESPACE@[500; 501) " " | ||
407 | AT@[501; 502) "@" | ||
408 | WHITESPACE@[502; 503) " " | ||
409 | DOT_DOT_PAT@[503; 505) | ||
410 | DOTDOT@[503; 505) ".." | ||
411 | R_BRACK@[505; 506) "]" | ||
412 | WHITESPACE@[506; 507) " " | ||
413 | EQ@[507; 508) "=" | ||
414 | WHITESPACE@[508; 509) " " | ||
415 | TUPLE_EXPR@[509; 511) | ||
416 | L_PAREN@[509; 510) "(" | ||
417 | R_PAREN@[510; 511) ")" | ||
418 | SEMI@[511; 512) ";" | ||
419 | WHITESPACE@[512; 517) "\n " | ||
420 | LET_STMT@[517; 552) | ||
421 | LET_KW@[517; 520) "let" | ||
422 | WHITESPACE@[520; 521) " " | ||
423 | SLICE_PAT@[521; 546) | ||
424 | L_BRACK@[521; 522) "[" | ||
425 | BIND_PAT@[522; 526) | ||
426 | NAME@[522; 526) | ||
427 | IDENT@[522; 526) "head" | ||
428 | COMMA@[526; 527) "," | ||
429 | WHITESPACE@[527; 528) " " | ||
430 | DOT_DOT_PAT@[528; 530) | ||
431 | DOTDOT@[528; 530) ".." | ||
432 | COMMA@[530; 531) "," | ||
433 | WHITESPACE@[531; 532) " " | ||
434 | BIND_PAT@[532; 535) | ||
435 | NAME@[532; 535) | ||
436 | IDENT@[532; 535) "mid" | ||
437 | COMMA@[535; 536) "," | ||
438 | WHITESPACE@[536; 537) " " | ||
439 | DOT_DOT_PAT@[537; 539) | ||
440 | DOTDOT@[537; 539) ".." | ||
441 | COMMA@[539; 540) "," | ||
442 | WHITESPACE@[540; 541) " " | ||
443 | BIND_PAT@[541; 545) | ||
444 | NAME@[541; 545) | ||
445 | IDENT@[541; 545) "cons" | ||
446 | R_BRACK@[545; 546) "]" | ||
447 | WHITESPACE@[546; 547) " " | ||
448 | EQ@[547; 548) "=" | ||
449 | WHITESPACE@[548; 549) " " | ||
450 | TUPLE_EXPR@[549; 551) | ||
451 | L_PAREN@[549; 550) "(" | ||
452 | R_PAREN@[550; 551) ")" | ||
453 | SEMI@[551; 552) ";" | ||
454 | WHITESPACE@[552; 553) "\n" | ||
455 | R_CURLY@[553; 554) "}" | ||
456 | WHITESPACE@[554; 555) "\n" | ||