Skip to content

Commit 879693e

Browse files
committed
Move complex inline test to own file
1 parent 506e1dd commit 879693e

File tree

7 files changed

+670
-372
lines changed

7 files changed

+670
-372
lines changed

crates/ra_parser/src/grammar/type_params.rs

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -195,22 +195,6 @@ fn where_predicate(p: &mut Parser) {
195195
// where
196196
// for<'a> F: Fn(&'a str)
197197
// { }
198-
// fn for_ref<F>()
199-
// where
200-
// for<'a> &'a F: Debug
201-
// { }
202-
// fn for_parens<F>()
203-
// where
204-
// for<'a> (&'a F): Fn(&'a str)
205-
// { }
206-
// fn for_slice<F>()
207-
// where
208-
// for<'a> [&'a F]: Eq
209-
// { }
210-
// fn for_qpath<T>(_t: &T)
211-
// where
212-
// for<'a> <&'a T as Baz>::Foo: Iterator
213-
// { }
214198
if p.at(T![for]) {
215199
types::for_binder(p);
216200
}
Lines changed: 238 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,240 @@
1-
SOURCE_FILE@0..79
2-
TYPE_ALIAS_DEF@0..25
1+
SOURCE_FILE@0..239
2+
TYPE_ALIAS_DEF@0..30
33
TYPE_KW@0..4 "type"
44
WHITESPACE@4..5 " "
5-
NAME@5..6
6-
IDENT@5..6 "A"
7-
WHITESPACE@6..7 " "
8-
EQ@7..8 "="
9-
WHITESPACE@8..9 " "
10-
FOR_TYPE@9..24
11-
FOR_KW@9..12 "for"
12-
TYPE_PARAM_LIST@12..16
13-
L_ANGLE@12..13 "<"
14-
LIFETIME_PARAM@13..15
15-
LIFETIME@13..15 "\'a"
16-
R_ANGLE@15..16 ">"
17-
WHITESPACE@16..17 " "
18-
REFERENCE_TYPE@17..24
19-
AMP@17..18 "&"
20-
LIFETIME@18..20 "\'a"
21-
WHITESPACE@20..21 " "
22-
PATH_TYPE@21..24
23-
PATH@21..24
24-
PATH_SEGMENT@21..24
25-
NAME_REF@21..24
26-
IDENT@21..24 "u32"
27-
SEMICOLON@24..25 ";"
28-
WHITESPACE@25..26 "\n"
29-
TYPE_ALIAS_DEF@26..54
30-
TYPE_KW@26..30 "type"
31-
WHITESPACE@30..31 " "
32-
NAME@31..32
33-
IDENT@31..32 "B"
34-
WHITESPACE@32..33 " "
35-
EQ@33..34 "="
36-
WHITESPACE@34..35 " "
37-
FOR_TYPE@35..53
38-
FOR_KW@35..38 "for"
39-
TYPE_PARAM_LIST@38..42
40-
L_ANGLE@38..39 "<"
41-
LIFETIME_PARAM@39..41
42-
LIFETIME@39..41 "\'a"
43-
R_ANGLE@41..42 ">"
44-
WHITESPACE@42..43 " "
45-
TUPLE_TYPE@43..53
46-
L_PAREN@43..44 "("
47-
REFERENCE_TYPE@44..51
48-
AMP@44..45 "&"
49-
LIFETIME@45..47 "\'a"
50-
WHITESPACE@47..48 " "
51-
PATH_TYPE@48..51
52-
PATH@48..51
53-
PATH_SEGMENT@48..51
54-
NAME_REF@48..51
55-
IDENT@48..51 "u32"
56-
COMMA@51..52 ","
57-
R_PAREN@52..53 ")"
58-
SEMICOLON@53..54 ";"
59-
WHITESPACE@54..55 "\n"
60-
TYPE_ALIAS_DEF@55..78
61-
TYPE_KW@55..59 "type"
62-
WHITESPACE@59..60 " "
63-
NAME@60..61
64-
IDENT@60..61 "B"
65-
WHITESPACE@61..62 " "
66-
EQ@62..63 "="
67-
WHITESPACE@63..64 " "
68-
FOR_TYPE@64..77
69-
FOR_KW@64..67 "for"
70-
TYPE_PARAM_LIST@67..71
71-
L_ANGLE@67..68 "<"
72-
LIFETIME_PARAM@68..70
73-
LIFETIME@68..70 "\'a"
74-
R_ANGLE@70..71 ">"
75-
WHITESPACE@71..72 " "
76-
SLICE_TYPE@72..77
77-
L_BRACK@72..73 "["
78-
PATH_TYPE@73..76
79-
PATH@73..76
80-
PATH_SEGMENT@73..76
81-
NAME_REF@73..76
82-
IDENT@73..76 "u32"
83-
R_BRACK@76..77 "]"
84-
SEMICOLON@77..78 ";"
85-
WHITESPACE@78..79 "\n"
86-
error 16..16: expected a function pointer or path
87-
error 42..42: expected a function pointer or path
88-
error 71..71: expected a function pointer or path
5+
NAME@5..11
6+
IDENT@5..11 "ForRef"
7+
WHITESPACE@11..12 " "
8+
EQ@12..13 "="
9+
WHITESPACE@13..14 " "
10+
FOR_TYPE@14..29
11+
FOR_KW@14..17 "for"
12+
TYPE_PARAM_LIST@17..21
13+
L_ANGLE@17..18 "<"
14+
LIFETIME_PARAM@18..20
15+
LIFETIME@18..20 "\'a"
16+
R_ANGLE@20..21 ">"
17+
WHITESPACE@21..22 " "
18+
REFERENCE_TYPE@22..29
19+
AMP@22..23 "&"
20+
LIFETIME@23..25 "\'a"
21+
WHITESPACE@25..26 " "
22+
PATH_TYPE@26..29
23+
PATH@26..29
24+
PATH_SEGMENT@26..29
25+
NAME_REF@26..29
26+
IDENT@26..29 "u32"
27+
SEMICOLON@29..30 ";"
28+
WHITESPACE@30..31 "\n"
29+
TYPE_ALIAS_DEF@31..64
30+
TYPE_KW@31..35 "type"
31+
WHITESPACE@35..36 " "
32+
NAME@36..42
33+
IDENT@36..42 "ForTup"
34+
WHITESPACE@42..43 " "
35+
EQ@43..44 "="
36+
WHITESPACE@44..45 " "
37+
FOR_TYPE@45..63
38+
FOR_KW@45..48 "for"
39+
TYPE_PARAM_LIST@48..52
40+
L_ANGLE@48..49 "<"
41+
LIFETIME_PARAM@49..51
42+
LIFETIME@49..51 "\'a"
43+
R_ANGLE@51..52 ">"
44+
WHITESPACE@52..53 " "
45+
TUPLE_TYPE@53..63
46+
L_PAREN@53..54 "("
47+
REFERENCE_TYPE@54..61
48+
AMP@54..55 "&"
49+
LIFETIME@55..57 "\'a"
50+
WHITESPACE@57..58 " "
51+
PATH_TYPE@58..61
52+
PATH@58..61
53+
PATH_SEGMENT@58..61
54+
NAME_REF@58..61
55+
IDENT@58..61 "u32"
56+
COMMA@61..62 ","
57+
R_PAREN@62..63 ")"
58+
SEMICOLON@63..64 ";"
59+
WHITESPACE@64..65 "\n"
60+
TYPE_ALIAS_DEF@65..95
61+
TYPE_KW@65..69 "type"
62+
WHITESPACE@69..70 " "
63+
NAME@70..78
64+
IDENT@70..78 "ForSlice"
65+
WHITESPACE@78..79 " "
66+
EQ@79..80 "="
67+
WHITESPACE@80..81 " "
68+
FOR_TYPE@81..94
69+
FOR_KW@81..84 "for"
70+
TYPE_PARAM_LIST@84..88
71+
L_ANGLE@84..85 "<"
72+
LIFETIME_PARAM@85..87
73+
LIFETIME@85..87 "\'a"
74+
R_ANGLE@87..88 ">"
75+
WHITESPACE@88..89 " "
76+
SLICE_TYPE@89..94
77+
L_BRACK@89..90 "["
78+
PATH_TYPE@90..93
79+
PATH@90..93
80+
PATH_SEGMENT@90..93
81+
NAME_REF@90..93
82+
IDENT@90..93 "u32"
83+
R_BRACK@93..94 "]"
84+
SEMICOLON@94..95 ";"
85+
WHITESPACE@95..96 "\n"
86+
TYPE_ALIAS_DEF@96..149
87+
TYPE_KW@96..100 "type"
88+
WHITESPACE@100..101 " "
89+
NAME@101..109
90+
IDENT@101..109 "ForForFn"
91+
WHITESPACE@109..110 " "
92+
EQ@110..111 "="
93+
WHITESPACE@111..112 " "
94+
FOR_TYPE@112..148
95+
FOR_KW@112..115 "for"
96+
TYPE_PARAM_LIST@115..119
97+
L_ANGLE@115..116 "<"
98+
LIFETIME_PARAM@116..118
99+
LIFETIME@116..118 "\'a"
100+
R_ANGLE@118..119 ">"
101+
WHITESPACE@119..120 " "
102+
FOR_TYPE@120..148
103+
FOR_KW@120..123 "for"
104+
TYPE_PARAM_LIST@123..127
105+
L_ANGLE@123..124 "<"
106+
LIFETIME_PARAM@124..126
107+
LIFETIME@124..126 "\'b"
108+
R_ANGLE@126..127 ">"
109+
WHITESPACE@127..128 " "
110+
FN_POINTER_TYPE@128..148
111+
FN_KW@128..130 "fn"
112+
PARAM_LIST@130..148
113+
L_PAREN@130..131 "("
114+
PARAM@131..138
115+
REFERENCE_TYPE@131..138
116+
AMP@131..132 "&"
117+
LIFETIME@132..134 "\'a"
118+
WHITESPACE@134..135 " "
119+
PATH_TYPE@135..138
120+
PATH@135..138
121+
PATH_SEGMENT@135..138
122+
NAME_REF@135..138
123+
IDENT@135..138 "i32"
124+
COMMA@138..139 ","
125+
WHITESPACE@139..140 " "
126+
PARAM@140..147
127+
REFERENCE_TYPE@140..147
128+
AMP@140..141 "&"
129+
LIFETIME@141..143 "\'b"
130+
WHITESPACE@143..144 " "
131+
PATH_TYPE@144..147
132+
PATH@144..147
133+
PATH_SEGMENT@144..147
134+
NAME_REF@144..147
135+
IDENT@144..147 "i32"
136+
R_PAREN@147..148 ")"
137+
SEMICOLON@148..149 ";"
138+
WHITESPACE@149..150 "\n"
139+
FN_DEF@150..238
140+
FN_KW@150..152 "fn"
141+
WHITESPACE@152..153 " "
142+
NAME@153..164
143+
IDENT@153..164 "for_for_for"
144+
TYPE_PARAM_LIST@164..167
145+
L_ANGLE@164..165 "<"
146+
TYPE_PARAM@165..166
147+
NAME@165..166
148+
IDENT@165..166 "T"
149+
R_ANGLE@166..167 ">"
150+
PARAM_LIST@167..169
151+
L_PAREN@167..168 "("
152+
R_PAREN@168..169 ")"
153+
WHITESPACE@169..170 "\n"
154+
WHERE_CLAUSE@170..234
155+
WHERE_KW@170..175 "where"
156+
WHITESPACE@175..180 "\n "
157+
WHERE_PRED@180..233
158+
FOR_KW@180..183 "for"
159+
TYPE_PARAM_LIST@183..187
160+
L_ANGLE@183..184 "<"
161+
LIFETIME_PARAM@184..186
162+
LIFETIME@184..186 "\'a"
163+
R_ANGLE@186..187 ">"
164+
WHITESPACE@187..188 " "
165+
FOR_TYPE@188..227
166+
FOR_KW@188..191 "for"
167+
TYPE_PARAM_LIST@191..195
168+
L_ANGLE@191..192 "<"
169+
LIFETIME_PARAM@192..194
170+
LIFETIME@192..194 "\'b"
171+
R_ANGLE@194..195 ">"
172+
WHITESPACE@195..196 " "
173+
FOR_TYPE@196..227
174+
FOR_KW@196..199 "for"
175+
TYPE_PARAM_LIST@199..203
176+
L_ANGLE@199..200 "<"
177+
LIFETIME_PARAM@200..202
178+
LIFETIME@200..202 "\'c"
179+
R_ANGLE@202..203 ">"
180+
WHITESPACE@203..204 " "
181+
FN_POINTER_TYPE@204..227
182+
FN_KW@204..206 "fn"
183+
PARAM_LIST@206..227
184+
L_PAREN@206..207 "("
185+
PARAM@207..212
186+
REFERENCE_TYPE@207..212
187+
AMP@207..208 "&"
188+
LIFETIME@208..210 "\'a"
189+
WHITESPACE@210..211 " "
190+
PATH_TYPE@211..212
191+
PATH@211..212
192+
PATH_SEGMENT@211..212
193+
NAME_REF@211..212
194+
IDENT@211..212 "T"
195+
COMMA@212..213 ","
196+
WHITESPACE@213..214 " "
197+
PARAM@214..219
198+
REFERENCE_TYPE@214..219
199+
AMP@214..215 "&"
200+
LIFETIME@215..217 "\'b"
201+
WHITESPACE@217..218 " "
202+
PATH_TYPE@218..219
203+
PATH@218..219
204+
PATH_SEGMENT@218..219
205+
NAME_REF@218..219
206+
IDENT@218..219 "T"
207+
COMMA@219..220 ","
208+
WHITESPACE@220..221 " "
209+
PARAM@221..226
210+
REFERENCE_TYPE@221..226
211+
AMP@221..222 "&"
212+
LIFETIME@222..224 "\'c"
213+
WHITESPACE@224..225 " "
214+
PATH_TYPE@225..226
215+
PATH@225..226
216+
PATH_SEGMENT@225..226
217+
NAME_REF@225..226
218+
IDENT@225..226 "T"
219+
R_PAREN@226..227 ")"
220+
COLON@227..228 ":"
221+
WHITESPACE@228..229 " "
222+
TYPE_BOUND_LIST@229..233
223+
TYPE_BOUND@229..233
224+
PATH_TYPE@229..233
225+
PATH@229..233
226+
PATH_SEGMENT@229..233
227+
NAME_REF@229..233
228+
IDENT@229..233 "Copy"
229+
COMMA@233..234 ","
230+
WHITESPACE@234..235 "\n"
231+
BLOCK_EXPR@235..238
232+
L_CURLY@235..236 "{"
233+
WHITESPACE@236..237 "\n"
234+
R_CURLY@237..238 "}"
235+
WHITESPACE@238..239 "\n"
236+
error 21..21: expected a function pointer or path
237+
error 52..52: expected a function pointer or path
238+
error 88..88: expected a function pointer or path
239+
error 119..119: expected a function pointer or path
240+
error 195..195: expected a function pointer or path
Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1-
type A = for<'a> &'a u32;
2-
type B = for<'a> (&'a u32,);
3-
type B = for<'a> [u32];
1+
type ForRef = for<'a> &'a u32;
2+
type ForTup = for<'a> (&'a u32,);
3+
type ForSlice = for<'a> [u32];
4+
type ForForFn = for<'a> for<'b> fn(&'a i32, &'b i32);
5+
fn for_for_for<T>()
6+
where
7+
for<'a> for<'b> for<'c> fn(&'a T, &'b T, &'c T): Copy,
8+
{
9+
}

0 commit comments

Comments
 (0)