diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-02-09 14:49:02 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-09 14:49:02 +0000 |
commit | fca93cfed339de88e1807e0633d24a2b3a7f01d5 (patch) | |
tree | e9cefdfa7b70209d547d40500b3409903252dcdd /crates/ide/src | |
parent | 876c4519e37db3cd134efb5dda604ac5a29c3853 (diff) | |
parent | 2dc67c85b94a8e858706568c4116b3123348941b (diff) |
Merge #7610
7610: Cleanup test r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Diffstat (limited to 'crates/ide/src')
-rw-r--r-- | crates/ide/src/join_lines.rs | 41 | ||||
-rw-r--r-- | crates/ide/src/syntax_tree.rs | 366 |
2 files changed, 190 insertions, 217 deletions
diff --git a/crates/ide/src/join_lines.rs b/crates/ide/src/join_lines.rs index 631bde0f1..e3f3985d1 100644 --- a/crates/ide/src/join_lines.rs +++ b/crates/ide/src/join_lines.rs | |||
@@ -270,27 +270,28 @@ fn foo() { | |||
270 | 270 | ||
271 | #[test] | 271 | #[test] |
272 | fn test_join_lines_diverging_block() { | 272 | fn test_join_lines_diverging_block() { |
273 | let before = r" | 273 | check_join_lines( |
274 | fn foo() { | 274 | r" |
275 | loop { | 275 | fn foo() { |
276 | match x { | 276 | loop { |
277 | 92 => $0{ | 277 | match x { |
278 | continue; | 278 | 92 => $0{ |
279 | } | 279 | continue; |
280 | } | ||
281 | } | ||
282 | } | ||
283 | "; | ||
284 | let after = r" | ||
285 | fn foo() { | ||
286 | loop { | ||
287 | match x { | ||
288 | 92 => $0continue, | ||
289 | } | ||
290 | } | ||
291 | } | 280 | } |
292 | "; | 281 | } |
293 | check_join_lines(before, after); | 282 | } |
283 | } | ||
284 | ", | ||
285 | r" | ||
286 | fn foo() { | ||
287 | loop { | ||
288 | match x { | ||
289 | 92 => $0continue, | ||
290 | } | ||
291 | } | ||
292 | } | ||
293 | ", | ||
294 | ); | ||
294 | } | 295 | } |
295 | 296 | ||
296 | #[test] | 297 | #[test] |
diff --git a/crates/ide/src/syntax_tree.rs b/crates/ide/src/syntax_tree.rs index 4c63d3023..f979ba434 100644 --- a/crates/ide/src/syntax_tree.rs +++ b/crates/ide/src/syntax_tree.rs | |||
@@ -100,147 +100,137 @@ fn syntax_tree_for_token(node: &SyntaxToken, text_range: TextRange) -> Option<St | |||
100 | 100 | ||
101 | #[cfg(test)] | 101 | #[cfg(test)] |
102 | mod tests { | 102 | mod tests { |
103 | use test_utils::assert_eq_text; | 103 | use expect_test::expect; |
104 | 104 | ||
105 | use crate::fixture; | 105 | use crate::fixture; |
106 | 106 | ||
107 | fn check(ra_fixture: &str, expect: expect_test::Expect) { | ||
108 | let (analysis, file_id) = fixture::file(ra_fixture); | ||
109 | let syn = analysis.syntax_tree(file_id, None).unwrap(); | ||
110 | expect.assert_eq(&syn) | ||
111 | } | ||
112 | fn check_range(ra_fixture: &str, expect: expect_test::Expect) { | ||
113 | let (analysis, frange) = fixture::range(ra_fixture); | ||
114 | let syn = analysis.syntax_tree(frange.file_id, Some(frange.range)).unwrap(); | ||
115 | expect.assert_eq(&syn) | ||
116 | } | ||
117 | |||
107 | #[test] | 118 | #[test] |
108 | fn test_syntax_tree_without_range() { | 119 | fn test_syntax_tree_without_range() { |
109 | // Basic syntax | 120 | // Basic syntax |
110 | let (analysis, file_id) = fixture::file(r#"fn foo() {}"#); | 121 | check( |
111 | let syn = analysis.syntax_tree(file_id, None).unwrap(); | 122 | r#"fn foo() {}"#, |
112 | 123 | expect![[r#" | |
113 | assert_eq_text!( | 124 | SOURCE_FILE@0..11 |
114 | r#" | 125 | FN@0..11 |
115 | SOURCE_FILE@0..11 | 126 | FN_KW@0..2 "fn" |
116 | FN@0..11 | 127 | WHITESPACE@2..3 " " |
117 | FN_KW@0..2 "fn" | 128 | NAME@3..6 |
118 | WHITESPACE@2..3 " " | 129 | IDENT@3..6 "foo" |
119 | NAME@3..6 | 130 | PARAM_LIST@6..8 |
120 | IDENT@3..6 "foo" | 131 | L_PAREN@6..7 "(" |
121 | PARAM_LIST@6..8 | 132 | R_PAREN@7..8 ")" |
122 | L_PAREN@6..7 "(" | 133 | WHITESPACE@8..9 " " |
123 | R_PAREN@7..8 ")" | 134 | BLOCK_EXPR@9..11 |
124 | WHITESPACE@8..9 " " | 135 | L_CURLY@9..10 "{" |
125 | BLOCK_EXPR@9..11 | 136 | R_CURLY@10..11 "}" |
126 | L_CURLY@9..10 "{" | 137 | "#]], |
127 | R_CURLY@10..11 "}" | ||
128 | "# | ||
129 | .trim(), | ||
130 | syn.trim() | ||
131 | ); | 138 | ); |
132 | 139 | ||
133 | let (analysis, file_id) = fixture::file( | 140 | check( |
134 | r#" | 141 | r#" |
135 | fn test() { | 142 | fn test() { |
136 | assert!(" | 143 | assert!(" |
137 | fn foo() { | 144 | fn foo() { |
138 | } | 145 | } |
139 | ", ""); | 146 | ", ""); |
140 | }"# | 147 | }"#, |
141 | .trim(), | 148 | expect![[r#" |
142 | ); | 149 | SOURCE_FILE@0..60 |
143 | let syn = analysis.syntax_tree(file_id, None).unwrap(); | 150 | FN@0..60 |
144 | 151 | FN_KW@0..2 "fn" | |
145 | assert_eq_text!( | 152 | WHITESPACE@2..3 " " |
146 | r#" | 153 | NAME@3..7 |
147 | SOURCE_FILE@0..60 | 154 | IDENT@3..7 "test" |
148 | FN@0..60 | 155 | PARAM_LIST@7..9 |
149 | FN_KW@0..2 "fn" | 156 | L_PAREN@7..8 "(" |
150 | WHITESPACE@2..3 " " | 157 | R_PAREN@8..9 ")" |
151 | NAME@3..7 | 158 | WHITESPACE@9..10 " " |
152 | IDENT@3..7 "test" | 159 | BLOCK_EXPR@10..60 |
153 | PARAM_LIST@7..9 | 160 | L_CURLY@10..11 "{" |
154 | L_PAREN@7..8 "(" | 161 | WHITESPACE@11..16 "\n " |
155 | R_PAREN@8..9 ")" | 162 | EXPR_STMT@16..58 |
156 | WHITESPACE@9..10 " " | 163 | MACRO_CALL@16..57 |
157 | BLOCK_EXPR@10..60 | 164 | PATH@16..22 |
158 | L_CURLY@10..11 "{" | 165 | PATH_SEGMENT@16..22 |
159 | WHITESPACE@11..16 "\n " | 166 | NAME_REF@16..22 |
160 | EXPR_STMT@16..58 | 167 | IDENT@16..22 "assert" |
161 | MACRO_CALL@16..57 | 168 | BANG@22..23 "!" |
162 | PATH@16..22 | 169 | TOKEN_TREE@23..57 |
163 | PATH_SEGMENT@16..22 | 170 | L_PAREN@23..24 "(" |
164 | NAME_REF@16..22 | 171 | STRING@24..52 "\"\n fn foo() {\n ..." |
165 | IDENT@16..22 "assert" | 172 | COMMA@52..53 "," |
166 | BANG@22..23 "!" | 173 | WHITESPACE@53..54 " " |
167 | TOKEN_TREE@23..57 | 174 | STRING@54..56 "\"\"" |
168 | L_PAREN@23..24 "(" | 175 | R_PAREN@56..57 ")" |
169 | STRING@24..52 "\"\n fn foo() {\n ..." | 176 | SEMICOLON@57..58 ";" |
170 | COMMA@52..53 "," | 177 | WHITESPACE@58..59 "\n" |
171 | WHITESPACE@53..54 " " | 178 | R_CURLY@59..60 "}" |
172 | STRING@54..56 "\"\"" | 179 | "#]], |
173 | R_PAREN@56..57 ")" | 180 | ) |
174 | SEMICOLON@57..58 ";" | ||
175 | WHITESPACE@58..59 "\n" | ||
176 | R_CURLY@59..60 "}" | ||
177 | "# | ||
178 | .trim(), | ||
179 | syn.trim() | ||
180 | ); | ||
181 | } | 181 | } |
182 | 182 | ||
183 | #[test] | 183 | #[test] |
184 | fn test_syntax_tree_with_range() { | 184 | fn test_syntax_tree_with_range() { |
185 | let (analysis, range) = fixture::range(r#"$0fn foo() {}$0"#.trim()); | 185 | check_range( |
186 | let syn = analysis.syntax_tree(range.file_id, Some(range.range)).unwrap(); | 186 | r#"$0fn foo() {}$0"#, |
187 | 187 | expect![[r#" | |
188 | assert_eq_text!( | 188 | FN@0..11 |
189 | r#" | 189 | FN_KW@0..2 "fn" |
190 | FN@0..11 | 190 | WHITESPACE@2..3 " " |
191 | FN_KW@0..2 "fn" | 191 | NAME@3..6 |
192 | WHITESPACE@2..3 " " | 192 | IDENT@3..6 "foo" |
193 | NAME@3..6 | 193 | PARAM_LIST@6..8 |
194 | IDENT@3..6 "foo" | 194 | L_PAREN@6..7 "(" |
195 | PARAM_LIST@6..8 | 195 | R_PAREN@7..8 ")" |
196 | L_PAREN@6..7 "(" | 196 | WHITESPACE@8..9 " " |
197 | R_PAREN@7..8 ")" | 197 | BLOCK_EXPR@9..11 |
198 | WHITESPACE@8..9 " " | 198 | L_CURLY@9..10 "{" |
199 | BLOCK_EXPR@9..11 | 199 | R_CURLY@10..11 "}" |
200 | L_CURLY@9..10 "{" | 200 | "#]], |
201 | R_CURLY@10..11 "}" | ||
202 | "# | ||
203 | .trim(), | ||
204 | syn.trim() | ||
205 | ); | 201 | ); |
206 | 202 | ||
207 | let (analysis, range) = fixture::range( | 203 | check_range( |
208 | r#"fn test() { | 204 | r#" |
205 | fn test() { | ||
209 | $0assert!(" | 206 | $0assert!(" |
210 | fn foo() { | 207 | fn foo() { |
211 | } | 208 | } |
212 | ", "");$0 | 209 | ", "");$0 |
213 | }"# | 210 | }"#, |
214 | .trim(), | 211 | expect![[r#" |
215 | ); | 212 | EXPR_STMT@16..58 |
216 | let syn = analysis.syntax_tree(range.file_id, Some(range.range)).unwrap(); | 213 | MACRO_CALL@16..57 |
217 | 214 | PATH@16..22 | |
218 | assert_eq_text!( | 215 | PATH_SEGMENT@16..22 |
219 | r#" | 216 | NAME_REF@16..22 |
220 | EXPR_STMT@16..58 | 217 | IDENT@16..22 "assert" |
221 | MACRO_CALL@16..57 | 218 | BANG@22..23 "!" |
222 | PATH@16..22 | 219 | TOKEN_TREE@23..57 |
223 | PATH_SEGMENT@16..22 | 220 | L_PAREN@23..24 "(" |
224 | NAME_REF@16..22 | 221 | STRING@24..52 "\"\n fn foo() {\n ..." |
225 | IDENT@16..22 "assert" | 222 | COMMA@52..53 "," |
226 | BANG@22..23 "!" | 223 | WHITESPACE@53..54 " " |
227 | TOKEN_TREE@23..57 | 224 | STRING@54..56 "\"\"" |
228 | L_PAREN@23..24 "(" | 225 | R_PAREN@56..57 ")" |
229 | STRING@24..52 "\"\n fn foo() {\n ..." | 226 | SEMICOLON@57..58 ";" |
230 | COMMA@52..53 "," | 227 | "#]], |
231 | WHITESPACE@53..54 " " | ||
232 | STRING@54..56 "\"\"" | ||
233 | R_PAREN@56..57 ")" | ||
234 | SEMICOLON@57..58 ";" | ||
235 | "# | ||
236 | .trim(), | ||
237 | syn.trim() | ||
238 | ); | 228 | ); |
239 | } | 229 | } |
240 | 230 | ||
241 | #[test] | 231 | #[test] |
242 | fn test_syntax_tree_inside_string() { | 232 | fn test_syntax_tree_inside_string() { |
243 | let (analysis, range) = fixture::range( | 233 | check_range( |
244 | r#"fn test() { | 234 | r#"fn test() { |
245 | assert!(" | 235 | assert!(" |
246 | $0fn foo() { | 236 | $0fn foo() { |
@@ -248,33 +238,27 @@ $0fn foo() { | |||
248 | fn bar() { | 238 | fn bar() { |
249 | } | 239 | } |
250 | ", ""); | 240 | ", ""); |
251 | }"# | 241 | }"#, |
252 | .trim(), | 242 | expect![[r#" |
253 | ); | 243 | SOURCE_FILE@0..12 |
254 | let syn = analysis.syntax_tree(range.file_id, Some(range.range)).unwrap(); | 244 | FN@0..12 |
255 | assert_eq_text!( | 245 | FN_KW@0..2 "fn" |
256 | r#" | 246 | WHITESPACE@2..3 " " |
257 | SOURCE_FILE@0..12 | 247 | NAME@3..6 |
258 | FN@0..12 | 248 | IDENT@3..6 "foo" |
259 | FN_KW@0..2 "fn" | 249 | PARAM_LIST@6..8 |
260 | WHITESPACE@2..3 " " | 250 | L_PAREN@6..7 "(" |
261 | NAME@3..6 | 251 | R_PAREN@7..8 ")" |
262 | IDENT@3..6 "foo" | 252 | WHITESPACE@8..9 " " |
263 | PARAM_LIST@6..8 | 253 | BLOCK_EXPR@9..12 |
264 | L_PAREN@6..7 "(" | 254 | L_CURLY@9..10 "{" |
265 | R_PAREN@7..8 ")" | 255 | WHITESPACE@10..11 "\n" |
266 | WHITESPACE@8..9 " " | 256 | R_CURLY@11..12 "}" |
267 | BLOCK_EXPR@9..12 | 257 | "#]], |
268 | L_CURLY@9..10 "{" | ||
269 | WHITESPACE@10..11 "\n" | ||
270 | R_CURLY@11..12 "}" | ||
271 | "# | ||
272 | .trim(), | ||
273 | syn.trim() | ||
274 | ); | 258 | ); |
275 | 259 | ||
276 | // With a raw string | 260 | // With a raw string |
277 | let (analysis, range) = fixture::range( | 261 | check_range( |
278 | r###"fn test() { | 262 | r###"fn test() { |
279 | assert!(r#" | 263 | assert!(r#" |
280 | $0fn foo() { | 264 | $0fn foo() { |
@@ -282,76 +266,64 @@ $0fn foo() { | |||
282 | fn bar() { | 266 | fn bar() { |
283 | } | 267 | } |
284 | "#, ""); | 268 | "#, ""); |
285 | }"### | 269 | }"###, |
286 | .trim(), | 270 | expect![[r#" |
287 | ); | 271 | SOURCE_FILE@0..12 |
288 | let syn = analysis.syntax_tree(range.file_id, Some(range.range)).unwrap(); | 272 | FN@0..12 |
289 | assert_eq_text!( | 273 | FN_KW@0..2 "fn" |
290 | r#" | 274 | WHITESPACE@2..3 " " |
291 | SOURCE_FILE@0..12 | 275 | NAME@3..6 |
292 | FN@0..12 | 276 | IDENT@3..6 "foo" |
293 | FN_KW@0..2 "fn" | 277 | PARAM_LIST@6..8 |
294 | WHITESPACE@2..3 " " | 278 | L_PAREN@6..7 "(" |
295 | NAME@3..6 | 279 | R_PAREN@7..8 ")" |
296 | IDENT@3..6 "foo" | 280 | WHITESPACE@8..9 " " |
297 | PARAM_LIST@6..8 | 281 | BLOCK_EXPR@9..12 |
298 | L_PAREN@6..7 "(" | 282 | L_CURLY@9..10 "{" |
299 | R_PAREN@7..8 ")" | 283 | WHITESPACE@10..11 "\n" |
300 | WHITESPACE@8..9 " " | 284 | R_CURLY@11..12 "}" |
301 | BLOCK_EXPR@9..12 | 285 | "#]], |
302 | L_CURLY@9..10 "{" | ||
303 | WHITESPACE@10..11 "\n" | ||
304 | R_CURLY@11..12 "}" | ||
305 | "# | ||
306 | .trim(), | ||
307 | syn.trim() | ||
308 | ); | 286 | ); |
309 | 287 | ||
310 | // With a raw string | 288 | // With a raw string |
311 | let (analysis, range) = fixture::range( | 289 | check_range( |
312 | r###"fn test() { | 290 | r###"fn test() { |
313 | assert!(r$0#" | 291 | assert!(r$0#" |
314 | fn foo() { | 292 | fn foo() { |
315 | } | 293 | } |
316 | fn bar() { | 294 | fn bar() { |
317 | }"$0#, ""); | 295 | }"$0#, ""); |
318 | }"### | 296 | }"###, |
319 | .trim(), | 297 | expect![[r#" |
320 | ); | 298 | SOURCE_FILE@0..25 |
321 | let syn = analysis.syntax_tree(range.file_id, Some(range.range)).unwrap(); | 299 | FN@0..12 |
322 | assert_eq_text!( | 300 | FN_KW@0..2 "fn" |
323 | r#" | 301 | WHITESPACE@2..3 " " |
324 | SOURCE_FILE@0..25 | 302 | NAME@3..6 |
325 | FN@0..12 | 303 | IDENT@3..6 "foo" |
326 | FN_KW@0..2 "fn" | 304 | PARAM_LIST@6..8 |
327 | WHITESPACE@2..3 " " | 305 | L_PAREN@6..7 "(" |
328 | NAME@3..6 | 306 | R_PAREN@7..8 ")" |
329 | IDENT@3..6 "foo" | 307 | WHITESPACE@8..9 " " |
330 | PARAM_LIST@6..8 | 308 | BLOCK_EXPR@9..12 |
331 | L_PAREN@6..7 "(" | 309 | L_CURLY@9..10 "{" |
332 | R_PAREN@7..8 ")" | 310 | WHITESPACE@10..11 "\n" |
333 | WHITESPACE@8..9 " " | 311 | R_CURLY@11..12 "}" |
334 | BLOCK_EXPR@9..12 | 312 | WHITESPACE@12..13 "\n" |
335 | L_CURLY@9..10 "{" | 313 | FN@13..25 |
336 | WHITESPACE@10..11 "\n" | 314 | FN_KW@13..15 "fn" |
337 | R_CURLY@11..12 "}" | 315 | WHITESPACE@15..16 " " |
338 | WHITESPACE@12..13 "\n" | 316 | NAME@16..19 |
339 | FN@13..25 | 317 | IDENT@16..19 "bar" |
340 | FN_KW@13..15 "fn" | 318 | PARAM_LIST@19..21 |
341 | WHITESPACE@15..16 " " | 319 | L_PAREN@19..20 "(" |
342 | NAME@16..19 | 320 | R_PAREN@20..21 ")" |
343 | IDENT@16..19 "bar" | 321 | WHITESPACE@21..22 " " |
344 | PARAM_LIST@19..21 | 322 | BLOCK_EXPR@22..25 |
345 | L_PAREN@19..20 "(" | 323 | L_CURLY@22..23 "{" |
346 | R_PAREN@20..21 ")" | 324 | WHITESPACE@23..24 "\n" |
347 | WHITESPACE@21..22 " " | 325 | R_CURLY@24..25 "}" |
348 | BLOCK_EXPR@22..25 | 326 | "#]], |
349 | L_CURLY@22..23 "{" | ||
350 | WHITESPACE@23..24 "\n" | ||
351 | R_CURLY@24..25 "}" | ||
352 | "# | ||
353 | .trim(), | ||
354 | syn.trim() | ||
355 | ); | 327 | ); |
356 | } | 328 | } |
357 | } | 329 | } |