diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2019-07-29 13:54:40 +0100 |
---|---|---|
committer | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2019-07-29 13:54:40 +0100 |
commit | 359b3376b32b38548c71e2b6e3a7393c4396ccf6 (patch) | |
tree | 7465f676da27b6ddc1421e901d41a4e44def0059 /crates | |
parent | 9e2925f340bfd109ce31e8e454187df30e609a60 (diff) | |
parent | 67e75ca1261863d21b48620e36b1632043ef36f9 (diff) |
Merge #1601
1601: Inline snapshots for tests r=matklad a=theotherphil
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/1127.
The "cargo format" commits are required to get the formatting tests to pass. However, they actually mess up the formatting.
Co-authored-by: Phil Ellison <[email protected]>
Diffstat (limited to 'crates')
38 files changed, 870 insertions, 1064 deletions
diff --git a/crates/ra_ide_api/src/completion.rs b/crates/ra_ide_api/src/completion.rs index 85160358a..a6b68be75 100644 --- a/crates/ra_ide_api/src/completion.rs +++ b/crates/ra_ide_api/src/completion.rs | |||
@@ -16,7 +16,7 @@ mod complete_postfix; | |||
16 | use ra_db::SourceDatabase; | 16 | use ra_db::SourceDatabase; |
17 | 17 | ||
18 | #[cfg(test)] | 18 | #[cfg(test)] |
19 | use crate::completion::completion_item::{check_completion, do_completion}; | 19 | use crate::completion::completion_item::do_completion; |
20 | use crate::{ | 20 | use crate::{ |
21 | completion::{ | 21 | completion::{ |
22 | completion_context::CompletionContext, | 22 | completion_context::CompletionContext, |
diff --git a/crates/ra_ide_api/src/completion/complete_scope.rs b/crates/ra_ide_api/src/completion/complete_scope.rs index f92034055..2000d953a 100644 --- a/crates/ra_ide_api/src/completion/complete_scope.rs +++ b/crates/ra_ide_api/src/completion/complete_scope.rs | |||
@@ -121,172 +121,413 @@ impl ImportResolver { | |||
121 | 121 | ||
122 | #[cfg(test)] | 122 | #[cfg(test)] |
123 | mod tests { | 123 | mod tests { |
124 | use crate::completion::{check_completion, CompletionKind}; | 124 | use crate::completion::{do_completion, CompletionItem, CompletionKind}; |
125 | use insta::assert_debug_snapshot_matches; | ||
125 | 126 | ||
126 | fn check_reference_completion(name: &str, code: &str) { | 127 | fn do_reference_completion(code: &str) -> Vec<CompletionItem> { |
127 | check_completion(name, code, CompletionKind::Reference); | 128 | do_completion(code, CompletionKind::Reference) |
128 | } | 129 | } |
129 | 130 | ||
130 | #[test] | 131 | #[test] |
131 | fn completes_bindings_from_let() { | 132 | fn completes_bindings_from_let() { |
132 | check_reference_completion( | 133 | assert_debug_snapshot_matches!( |
133 | "bindings_from_let", | 134 | do_reference_completion( |
134 | r" | 135 | r" |
135 | fn quux(x: i32) { | 136 | fn quux(x: i32) { |
136 | let y = 92; | 137 | let y = 92; |
137 | 1 + <|>; | 138 | 1 + <|>; |
138 | let z = (); | 139 | let z = (); |
139 | } | 140 | } |
140 | ", | 141 | " |
142 | ), | ||
143 | @r###"[ | ||
144 | CompletionItem { | ||
145 | label: "quux", | ||
146 | source_range: [91; 91), | ||
147 | delete: [91; 91), | ||
148 | insert: "quux($0)", | ||
149 | kind: Function, | ||
150 | detail: "fn quux(x: i32)", | ||
151 | }, | ||
152 | CompletionItem { | ||
153 | label: "x", | ||
154 | source_range: [91; 91), | ||
155 | delete: [91; 91), | ||
156 | insert: "x", | ||
157 | kind: Binding, | ||
158 | detail: "i32", | ||
159 | }, | ||
160 | CompletionItem { | ||
161 | label: "y", | ||
162 | source_range: [91; 91), | ||
163 | delete: [91; 91), | ||
164 | insert: "y", | ||
165 | kind: Binding, | ||
166 | detail: "i32", | ||
167 | }, | ||
168 | ]"### | ||
141 | ); | 169 | ); |
142 | } | 170 | } |
143 | 171 | ||
144 | #[test] | 172 | #[test] |
145 | fn completes_bindings_from_if_let() { | 173 | fn completes_bindings_from_if_let() { |
146 | check_reference_completion( | 174 | assert_debug_snapshot_matches!( |
147 | "bindings_from_if_let", | 175 | do_reference_completion( |
148 | r" | 176 | r" |
149 | fn quux() { | 177 | fn quux() { |
150 | if let Some(x) = foo() { | 178 | if let Some(x) = foo() { |
151 | let y = 92; | 179 | let y = 92; |
152 | }; | 180 | }; |
153 | if let Some(a) = bar() { | 181 | if let Some(a) = bar() { |
154 | let b = 62; | 182 | let b = 62; |
155 | 1 + <|> | 183 | 1 + <|> |
184 | } | ||
156 | } | 185 | } |
157 | } | 186 | " |
158 | ", | 187 | ), |
188 | @r###"[ | ||
189 | CompletionItem { | ||
190 | label: "a", | ||
191 | source_range: [242; 242), | ||
192 | delete: [242; 242), | ||
193 | insert: "a", | ||
194 | kind: Binding, | ||
195 | }, | ||
196 | CompletionItem { | ||
197 | label: "b", | ||
198 | source_range: [242; 242), | ||
199 | delete: [242; 242), | ||
200 | insert: "b", | ||
201 | kind: Binding, | ||
202 | detail: "i32", | ||
203 | }, | ||
204 | CompletionItem { | ||
205 | label: "quux", | ||
206 | source_range: [242; 242), | ||
207 | delete: [242; 242), | ||
208 | insert: "quux()$0", | ||
209 | kind: Function, | ||
210 | detail: "fn quux()", | ||
211 | }, | ||
212 | ]"### | ||
159 | ); | 213 | ); |
160 | } | 214 | } |
161 | 215 | ||
162 | #[test] | 216 | #[test] |
163 | fn completes_bindings_from_for() { | 217 | fn completes_bindings_from_for() { |
164 | check_reference_completion( | 218 | assert_debug_snapshot_matches!( |
165 | "bindings_from_for", | 219 | do_reference_completion( |
166 | r" | 220 | r" |
167 | fn quux() { | 221 | fn quux() { |
168 | for x in &[1, 2, 3] { | 222 | for x in &[1, 2, 3] { |
169 | <|> | 223 | <|> |
224 | } | ||
170 | } | 225 | } |
171 | } | 226 | " |
172 | ", | 227 | ), |
228 | @r###"[ | ||
229 | CompletionItem { | ||
230 | label: "quux", | ||
231 | source_range: [95; 95), | ||
232 | delete: [95; 95), | ||
233 | insert: "quux()$0", | ||
234 | kind: Function, | ||
235 | detail: "fn quux()", | ||
236 | }, | ||
237 | CompletionItem { | ||
238 | label: "x", | ||
239 | source_range: [95; 95), | ||
240 | delete: [95; 95), | ||
241 | insert: "x", | ||
242 | kind: Binding, | ||
243 | }, | ||
244 | ]"### | ||
173 | ); | 245 | ); |
174 | } | 246 | } |
175 | 247 | ||
176 | #[test] | 248 | #[test] |
177 | fn completes_generic_params() { | 249 | fn completes_generic_params() { |
178 | check_reference_completion( | 250 | assert_debug_snapshot_matches!( |
179 | "generic_params", | 251 | do_reference_completion( |
180 | r" | 252 | r" |
181 | fn quux<T>() { | 253 | fn quux<T>() { |
182 | <|> | 254 | <|> |
183 | } | 255 | } |
184 | ", | 256 | " |
257 | ), | ||
258 | @r###"[ | ||
259 | CompletionItem { | ||
260 | label: "T", | ||
261 | source_range: [52; 52), | ||
262 | delete: [52; 52), | ||
263 | insert: "T", | ||
264 | kind: TypeParam, | ||
265 | }, | ||
266 | CompletionItem { | ||
267 | label: "quux", | ||
268 | source_range: [52; 52), | ||
269 | delete: [52; 52), | ||
270 | insert: "quux()$0", | ||
271 | kind: Function, | ||
272 | detail: "fn quux<T>()", | ||
273 | }, | ||
274 | ]"### | ||
185 | ); | 275 | ); |
186 | } | 276 | } |
187 | 277 | ||
188 | #[test] | 278 | #[test] |
189 | fn completes_generic_params_in_struct() { | 279 | fn completes_generic_params_in_struct() { |
190 | check_reference_completion( | 280 | assert_debug_snapshot_matches!( |
191 | "generic_params_in_struct", | 281 | do_reference_completion( |
192 | r" | 282 | r" |
193 | struct X<T> { | 283 | struct X<T> { |
194 | x: <|> | 284 | x: <|> |
195 | } | 285 | } |
196 | ", | 286 | " |
287 | ), | ||
288 | @r###"[ | ||
289 | CompletionItem { | ||
290 | label: "T", | ||
291 | source_range: [54; 54), | ||
292 | delete: [54; 54), | ||
293 | insert: "T", | ||
294 | kind: TypeParam, | ||
295 | }, | ||
296 | CompletionItem { | ||
297 | label: "X", | ||
298 | source_range: [54; 54), | ||
299 | delete: [54; 54), | ||
300 | insert: "X", | ||
301 | kind: Struct, | ||
302 | }, | ||
303 | ]"### | ||
197 | ); | 304 | ); |
198 | } | 305 | } |
199 | 306 | ||
200 | #[test] | 307 | #[test] |
201 | fn completes_module_items() { | 308 | fn completes_module_items() { |
202 | check_reference_completion( | 309 | assert_debug_snapshot_matches!( |
203 | "module_items", | 310 | do_reference_completion( |
204 | r" | 311 | r" |
205 | struct Foo; | 312 | struct Foo; |
206 | enum Baz {} | 313 | enum Baz {} |
207 | fn quux() { | 314 | fn quux() { |
208 | <|> | 315 | <|> |
209 | } | 316 | } |
210 | ", | 317 | " |
211 | ); | 318 | ), |
319 | @r###"[ | ||
320 | CompletionItem { | ||
321 | label: "Baz", | ||
322 | source_range: [105; 105), | ||
323 | delete: [105; 105), | ||
324 | insert: "Baz", | ||
325 | kind: Enum, | ||
326 | }, | ||
327 | CompletionItem { | ||
328 | label: "Foo", | ||
329 | source_range: [105; 105), | ||
330 | delete: [105; 105), | ||
331 | insert: "Foo", | ||
332 | kind: Struct, | ||
333 | }, | ||
334 | CompletionItem { | ||
335 | label: "quux", | ||
336 | source_range: [105; 105), | ||
337 | delete: [105; 105), | ||
338 | insert: "quux()$0", | ||
339 | kind: Function, | ||
340 | detail: "fn quux()", | ||
341 | }, | ||
342 | ]"### | ||
343 | ); | ||
212 | } | 344 | } |
213 | 345 | ||
214 | #[test] | 346 | #[test] |
215 | fn completes_extern_prelude() { | 347 | fn completes_extern_prelude() { |
216 | check_reference_completion( | 348 | assert_debug_snapshot_matches!( |
217 | "extern_prelude", | 349 | do_reference_completion( |
218 | r" | 350 | r" |
219 | //- /lib.rs | 351 | //- /lib.rs |
220 | use <|>; | 352 | use <|>; |
221 | 353 | ||
222 | //- /other_crate/lib.rs | 354 | //- /other_crate/lib.rs |
223 | // nothing here | 355 | // nothing here |
224 | ", | 356 | " |
357 | ), | ||
358 | @r#"[ | ||
359 | CompletionItem { | ||
360 | label: "other_crate", | ||
361 | source_range: [4; 4), | ||
362 | delete: [4; 4), | ||
363 | insert: "other_crate", | ||
364 | kind: Module, | ||
365 | }, | ||
366 | ]"# | ||
225 | ); | 367 | ); |
226 | } | 368 | } |
227 | 369 | ||
228 | #[test] | 370 | #[test] |
229 | fn completes_module_items_in_nested_modules() { | 371 | fn completes_module_items_in_nested_modules() { |
230 | check_reference_completion( | 372 | assert_debug_snapshot_matches!( |
231 | "module_items_in_nested_modules", | 373 | do_reference_completion( |
232 | r" | 374 | r" |
233 | struct Foo; | 375 | struct Foo; |
234 | mod m { | 376 | mod m { |
235 | struct Bar; | 377 | struct Bar; |
236 | fn quux() { <|> } | 378 | fn quux() { <|> } |
237 | } | 379 | } |
238 | ", | 380 | " |
381 | ), | ||
382 | @r###"[ | ||
383 | CompletionItem { | ||
384 | label: "Bar", | ||
385 | source_range: [117; 117), | ||
386 | delete: [117; 117), | ||
387 | insert: "Bar", | ||
388 | kind: Struct, | ||
389 | }, | ||
390 | CompletionItem { | ||
391 | label: "quux", | ||
392 | source_range: [117; 117), | ||
393 | delete: [117; 117), | ||
394 | insert: "quux()$0", | ||
395 | kind: Function, | ||
396 | detail: "fn quux()", | ||
397 | }, | ||
398 | ]"### | ||
239 | ); | 399 | ); |
240 | } | 400 | } |
241 | 401 | ||
242 | #[test] | 402 | #[test] |
243 | fn completes_return_type() { | 403 | fn completes_return_type() { |
244 | check_reference_completion( | 404 | assert_debug_snapshot_matches!( |
245 | "return_type", | 405 | do_reference_completion( |
246 | r" | 406 | r" |
247 | struct Foo; | 407 | struct Foo; |
248 | fn x() -> <|> | 408 | fn x() -> <|> |
249 | ", | 409 | " |
250 | ) | 410 | ), |
411 | @r###"[ | ||
412 | CompletionItem { | ||
413 | label: "Foo", | ||
414 | source_range: [55; 55), | ||
415 | delete: [55; 55), | ||
416 | insert: "Foo", | ||
417 | kind: Struct, | ||
418 | }, | ||
419 | CompletionItem { | ||
420 | label: "x", | ||
421 | source_range: [55; 55), | ||
422 | delete: [55; 55), | ||
423 | insert: "x()$0", | ||
424 | kind: Function, | ||
425 | detail: "fn x()", | ||
426 | }, | ||
427 | ]"### | ||
428 | ); | ||
251 | } | 429 | } |
252 | 430 | ||
253 | #[test] | 431 | #[test] |
254 | fn dont_show_both_completions_for_shadowing() { | 432 | fn dont_show_both_completions_for_shadowing() { |
255 | check_reference_completion( | 433 | assert_debug_snapshot_matches!( |
256 | "dont_show_both_completions_for_shadowing", | 434 | do_reference_completion( |
257 | r" | 435 | r" |
258 | fn foo() { | 436 | fn foo() { |
259 | let bar = 92; | 437 | let bar = 92; |
260 | { | 438 | { |
261 | let bar = 62; | 439 | let bar = 62; |
262 | <|> | 440 | <|> |
441 | } | ||
263 | } | 442 | } |
264 | } | 443 | " |
265 | ", | 444 | ), |
266 | ) | 445 | @r###"[ |
446 | CompletionItem { | ||
447 | label: "bar", | ||
448 | source_range: [146; 146), | ||
449 | delete: [146; 146), | ||
450 | insert: "bar", | ||
451 | kind: Binding, | ||
452 | detail: "i32", | ||
453 | }, | ||
454 | CompletionItem { | ||
455 | label: "foo", | ||
456 | source_range: [146; 146), | ||
457 | delete: [146; 146), | ||
458 | insert: "foo()$0", | ||
459 | kind: Function, | ||
460 | detail: "fn foo()", | ||
461 | }, | ||
462 | ]"### | ||
463 | ); | ||
267 | } | 464 | } |
268 | 465 | ||
269 | #[test] | 466 | #[test] |
270 | fn completes_self_in_methods() { | 467 | fn completes_self_in_methods() { |
271 | check_reference_completion("self_in_methods", r"impl S { fn foo(&self) { <|> } }") | 468 | assert_debug_snapshot_matches!( |
469 | do_reference_completion(r"impl S { fn foo(&self) { <|> } }"), | ||
470 | @r#"[ | ||
471 | CompletionItem { | ||
472 | label: "Self", | ||
473 | source_range: [25; 25), | ||
474 | delete: [25; 25), | ||
475 | insert: "Self", | ||
476 | kind: TypeParam, | ||
477 | }, | ||
478 | CompletionItem { | ||
479 | label: "self", | ||
480 | source_range: [25; 25), | ||
481 | delete: [25; 25), | ||
482 | insert: "self", | ||
483 | kind: Binding, | ||
484 | detail: "&{unknown}", | ||
485 | }, | ||
486 | ]"# | ||
487 | ); | ||
272 | } | 488 | } |
273 | 489 | ||
274 | #[test] | 490 | #[test] |
275 | fn completes_prelude() { | 491 | fn completes_prelude() { |
276 | check_reference_completion( | 492 | assert_debug_snapshot_matches!( |
277 | "completes_prelude", | 493 | do_reference_completion( |
278 | " | 494 | " |
279 | //- /main.rs | 495 | //- /main.rs |
280 | fn foo() { let x: <|> } | 496 | fn foo() { let x: <|> } |
281 | 497 | ||
282 | //- /std/lib.rs | 498 | //- /std/lib.rs |
283 | #[prelude_import] | 499 | #[prelude_import] |
284 | use prelude::*; | 500 | use prelude::*; |
285 | 501 | ||
286 | mod prelude { | 502 | mod prelude { |
287 | struct Option; | 503 | struct Option; |
288 | } | 504 | } |
289 | ", | 505 | " |
506 | ), | ||
507 | @r#"[ | ||
508 | CompletionItem { | ||
509 | label: "Option", | ||
510 | source_range: [18; 18), | ||
511 | delete: [18; 18), | ||
512 | insert: "Option", | ||
513 | kind: Struct, | ||
514 | }, | ||
515 | CompletionItem { | ||
516 | label: "foo", | ||
517 | source_range: [18; 18), | ||
518 | delete: [18; 18), | ||
519 | insert: "foo()$0", | ||
520 | kind: Function, | ||
521 | detail: "fn foo()", | ||
522 | }, | ||
523 | CompletionItem { | ||
524 | label: "std", | ||
525 | source_range: [18; 18), | ||
526 | delete: [18; 18), | ||
527 | insert: "std", | ||
528 | kind: Module, | ||
529 | }, | ||
530 | ]"# | ||
290 | ); | 531 | ); |
291 | } | 532 | } |
292 | } | 533 | } |
diff --git a/crates/ra_ide_api/src/completion/complete_snippet.rs b/crates/ra_ide_api/src/completion/complete_snippet.rs index d2d364b57..a35f31511 100644 --- a/crates/ra_ide_api/src/completion/complete_snippet.rs +++ b/crates/ra_ide_api/src/completion/complete_snippet.rs | |||
@@ -39,39 +39,76 @@ fn ${1:feature}() { | |||
39 | 39 | ||
40 | #[cfg(test)] | 40 | #[cfg(test)] |
41 | mod tests { | 41 | mod tests { |
42 | use crate::completion::{check_completion, CompletionKind}; | 42 | use crate::completion::{do_completion, CompletionItem, CompletionKind}; |
43 | use insta::assert_debug_snapshot_matches; | ||
43 | 44 | ||
44 | fn check_snippet_completion(name: &str, code: &str) { | 45 | fn do_snippet_completion(code: &str) -> Vec<CompletionItem> { |
45 | check_completion(name, code, CompletionKind::Snippet); | 46 | do_completion(code, CompletionKind::Snippet) |
46 | } | 47 | } |
47 | 48 | ||
48 | #[test] | 49 | #[test] |
49 | fn completes_snippets_in_expressions() { | 50 | fn completes_snippets_in_expressions() { |
50 | check_snippet_completion("snippets_in_expressions", r"fn foo(x: i32) { <|> }"); | 51 | assert_debug_snapshot_matches!( |
52 | do_snippet_completion(r"fn foo(x: i32) { <|> }"), | ||
53 | @r#"[ | ||
54 | CompletionItem { | ||
55 | label: "pd", | ||
56 | source_range: [17; 17), | ||
57 | delete: [17; 17), | ||
58 | insert: "eprintln!(\"$0 = {:?}\", $0);", | ||
59 | kind: Snippet, | ||
60 | }, | ||
61 | CompletionItem { | ||
62 | label: "ppd", | ||
63 | source_range: [17; 17), | ||
64 | delete: [17; 17), | ||
65 | insert: "eprintln!(\"$0 = {:#?}\", $0);", | ||
66 | kind: Snippet, | ||
67 | }, | ||
68 | ]"# | ||
69 | ); | ||
51 | } | 70 | } |
52 | 71 | ||
53 | #[test] | 72 | #[test] |
54 | fn should_not_complete_snippets_in_path() { | 73 | fn should_not_complete_snippets_in_path() { |
55 | check_snippet_completion( | 74 | assert_debug_snapshot_matches!( |
56 | "should_not_complete_snippets_in_path", | 75 | do_snippet_completion(r"fn foo(x: i32) { ::foo<|> }"), |
57 | r"fn foo(x: i32) { ::foo<|> }", | 76 | @r#"[]"# |
58 | ); | 77 | ); |
59 | check_snippet_completion( | 78 | assert_debug_snapshot_matches!( |
60 | "should_not_complete_snippets_in_path2", | 79 | do_snippet_completion(r"fn foo(x: i32) { ::<|> }"), |
61 | r"fn foo(x: i32) { ::<|> }", | 80 | @r#"[]"# |
62 | ); | 81 | ); |
63 | } | 82 | } |
64 | 83 | ||
65 | #[test] | 84 | #[test] |
66 | fn completes_snippets_in_items() { | 85 | fn completes_snippets_in_items() { |
67 | check_snippet_completion( | 86 | assert_debug_snapshot_matches!( |
68 | "snippets_in_items", | 87 | do_snippet_completion( |
69 | r" | 88 | r" |
70 | #[cfg(test)] | 89 | #[cfg(test)] |
71 | mod tests { | 90 | mod tests { |
72 | <|> | 91 | <|> |
73 | } | 92 | } |
74 | ", | 93 | " |
94 | ), | ||
95 | @r###"[ | ||
96 | CompletionItem { | ||
97 | label: "Test function", | ||
98 | source_range: [78; 78), | ||
99 | delete: [78; 78), | ||
100 | insert: "#[test]\nfn ${1:feature}() {\n $0\n}", | ||
101 | kind: Snippet, | ||
102 | lookup: "tfn", | ||
103 | }, | ||
104 | CompletionItem { | ||
105 | label: "pub(crate)", | ||
106 | source_range: [78; 78), | ||
107 | delete: [78; 78), | ||
108 | insert: "pub(crate) $0", | ||
109 | kind: Snippet, | ||
110 | }, | ||
111 | ]"### | ||
75 | ); | 112 | ); |
76 | } | 113 | } |
77 | } | 114 | } |
diff --git a/crates/ra_ide_api/src/completion/completion_item.rs b/crates/ra_ide_api/src/completion/completion_item.rs index f78c4c877..d787bb69e 100644 --- a/crates/ra_ide_api/src/completion/completion_item.rs +++ b/crates/ra_ide_api/src/completion/completion_item.rs | |||
@@ -299,10 +299,3 @@ pub(crate) fn do_completion(code: &str, kind: CompletionKind) -> Vec<CompletionI | |||
299 | kind_completions.sort_by_key(|c| c.label.clone()); | 299 | kind_completions.sort_by_key(|c| c.label.clone()); |
300 | kind_completions | 300 | kind_completions |
301 | } | 301 | } |
302 | |||
303 | #[cfg(test)] | ||
304 | pub(crate) fn check_completion(test_name: &str, code: &str, kind: CompletionKind) { | ||
305 | use insta::assert_debug_snapshot_matches; | ||
306 | let kind_completions = do_completion(code, kind); | ||
307 | assert_debug_snapshot_matches!(test_name, kind_completions); | ||
308 | } | ||
diff --git a/crates/ra_ide_api/src/completion/presentation.rs b/crates/ra_ide_api/src/completion/presentation.rs index 5cf55a496..6878008d3 100644 --- a/crates/ra_ide_api/src/completion/presentation.rs +++ b/crates/ra_ide_api/src/completion/presentation.rs | |||
@@ -182,80 +182,169 @@ impl Completions { | |||
182 | 182 | ||
183 | #[cfg(test)] | 183 | #[cfg(test)] |
184 | mod tests { | 184 | mod tests { |
185 | use crate::completion::{do_completion, CompletionItem, CompletionKind}; | ||
186 | use insta::assert_debug_snapshot_matches; | ||
185 | use test_utils::covers; | 187 | use test_utils::covers; |
186 | 188 | ||
187 | use crate::completion::{check_completion, CompletionKind}; | 189 | fn do_reference_completion(code: &str) -> Vec<CompletionItem> { |
188 | 190 | do_completion(code, CompletionKind::Reference) | |
189 | fn check_reference_completion(code: &str, expected_completions: &str) { | ||
190 | check_completion(code, expected_completions, CompletionKind::Reference); | ||
191 | } | 191 | } |
192 | 192 | ||
193 | #[test] | 193 | #[test] |
194 | fn inserts_parens_for_function_calls() { | 194 | fn inserts_parens_for_function_calls() { |
195 | covers!(inserts_parens_for_function_calls); | 195 | covers!(inserts_parens_for_function_calls); |
196 | check_reference_completion( | 196 | assert_debug_snapshot_matches!( |
197 | "inserts_parens_for_function_calls1", | 197 | do_reference_completion( |
198 | r" | 198 | r" |
199 | fn no_args() {} | 199 | fn no_args() {} |
200 | fn main() { no_<|> } | 200 | fn main() { no_<|> } |
201 | ", | 201 | " |
202 | ), | ||
203 | @r###"[ | ||
204 | CompletionItem { | ||
205 | label: "main", | ||
206 | source_range: [61; 64), | ||
207 | delete: [61; 64), | ||
208 | insert: "main()$0", | ||
209 | kind: Function, | ||
210 | detail: "fn main()", | ||
211 | }, | ||
212 | CompletionItem { | ||
213 | label: "no_args", | ||
214 | source_range: [61; 64), | ||
215 | delete: [61; 64), | ||
216 | insert: "no_args()$0", | ||
217 | kind: Function, | ||
218 | detail: "fn no_args()", | ||
219 | }, | ||
220 | ]"### | ||
202 | ); | 221 | ); |
203 | check_reference_completion( | 222 | assert_debug_snapshot_matches!( |
204 | "inserts_parens_for_function_calls2", | 223 | do_reference_completion( |
205 | r" | 224 | r" |
206 | fn with_args(x: i32, y: String) {} | 225 | fn with_args(x: i32, y: String) {} |
207 | fn main() { with_<|> } | 226 | fn main() { with_<|> } |
208 | ", | 227 | " |
228 | ), | ||
229 | @r###"[ | ||
230 | CompletionItem { | ||
231 | label: "main", | ||
232 | source_range: [80; 85), | ||
233 | delete: [80; 85), | ||
234 | insert: "main()$0", | ||
235 | kind: Function, | ||
236 | detail: "fn main()", | ||
237 | }, | ||
238 | CompletionItem { | ||
239 | label: "with_args", | ||
240 | source_range: [80; 85), | ||
241 | delete: [80; 85), | ||
242 | insert: "with_args($0)", | ||
243 | kind: Function, | ||
244 | detail: "fn with_args(x: i32, y: String)", | ||
245 | }, | ||
246 | ]"### | ||
247 | ); | ||
248 | assert_debug_snapshot_matches!( | ||
249 | do_reference_completion( | ||
250 | r" | ||
251 | struct S {} | ||
252 | impl S { | ||
253 | fn foo(&self) {} | ||
254 | } | ||
255 | fn bar(s: &S) { | ||
256 | s.f<|> | ||
257 | } | ||
258 | " | ||
259 | ), | ||
260 | @r###"[ | ||
261 | CompletionItem { | ||
262 | label: "foo", | ||
263 | source_range: [163; 164), | ||
264 | delete: [163; 164), | ||
265 | insert: "foo()$0", | ||
266 | kind: Method, | ||
267 | detail: "fn foo(&self)", | ||
268 | }, | ||
269 | ]"### | ||
209 | ); | 270 | ); |
210 | check_reference_completion( | ||
211 | "inserts_parens_for_function_calls3", | ||
212 | r" | ||
213 | struct S {} | ||
214 | impl S { | ||
215 | fn foo(&self) {} | ||
216 | } | ||
217 | fn bar(s: &S) { | ||
218 | s.f<|> | ||
219 | } | ||
220 | ", | ||
221 | ) | ||
222 | } | 271 | } |
223 | 272 | ||
224 | #[test] | 273 | #[test] |
225 | fn dont_render_function_parens_in_use_item() { | 274 | fn dont_render_function_parens_in_use_item() { |
226 | check_reference_completion( | 275 | assert_debug_snapshot_matches!( |
227 | "dont_render_function_parens_in_use_item", | 276 | do_reference_completion( |
228 | " | 277 | " |
229 | //- /lib.rs | 278 | //- /lib.rs |
230 | mod m { pub fn foo() {} } | 279 | mod m { pub fn foo() {} } |
231 | use crate::m::f<|>; | 280 | use crate::m::f<|>; |
232 | ", | 281 | " |
233 | ) | 282 | ), |
283 | @r#"[ | ||
284 | CompletionItem { | ||
285 | label: "foo", | ||
286 | source_range: [40; 41), | ||
287 | delete: [40; 41), | ||
288 | insert: "foo", | ||
289 | kind: Function, | ||
290 | detail: "pub fn foo()", | ||
291 | }, | ||
292 | ]"# | ||
293 | ); | ||
234 | } | 294 | } |
235 | 295 | ||
236 | #[test] | 296 | #[test] |
237 | fn dont_render_function_parens_if_already_call() { | 297 | fn dont_render_function_parens_if_already_call() { |
238 | check_reference_completion( | 298 | assert_debug_snapshot_matches!( |
239 | "dont_render_function_parens_if_already_call", | 299 | do_reference_completion( |
240 | " | 300 | " |
241 | //- /lib.rs | 301 | //- /lib.rs |
242 | fn frobnicate() {} | 302 | fn frobnicate() {} |
243 | fn main() { | 303 | fn main() { |
244 | frob<|>(); | 304 | frob<|>(); |
245 | } | 305 | } |
246 | ", | 306 | " |
307 | ), | ||
308 | @r#"[ | ||
309 | CompletionItem { | ||
310 | label: "frobnicate", | ||
311 | source_range: [35; 39), | ||
312 | delete: [35; 39), | ||
313 | insert: "frobnicate", | ||
314 | kind: Function, | ||
315 | detail: "fn frobnicate()", | ||
316 | }, | ||
317 | CompletionItem { | ||
318 | label: "main", | ||
319 | source_range: [35; 39), | ||
320 | delete: [35; 39), | ||
321 | insert: "main", | ||
322 | kind: Function, | ||
323 | detail: "fn main()", | ||
324 | }, | ||
325 | ]"# | ||
326 | ); | ||
327 | assert_debug_snapshot_matches!( | ||
328 | do_reference_completion( | ||
329 | " | ||
330 | //- /lib.rs | ||
331 | struct Foo {} | ||
332 | impl Foo { fn new() -> Foo {} } | ||
333 | fn main() { | ||
334 | Foo::ne<|>(); | ||
335 | } | ||
336 | " | ||
337 | ), | ||
338 | @r#"[ | ||
339 | CompletionItem { | ||
340 | label: "new", | ||
341 | source_range: [67; 69), | ||
342 | delete: [67; 69), | ||
343 | insert: "new", | ||
344 | kind: Function, | ||
345 | detail: "fn new() -> Foo", | ||
346 | }, | ||
347 | ]"# | ||
247 | ); | 348 | ); |
248 | check_reference_completion( | ||
249 | "dont_render_function_parens_if_already_call_assoc_fn", | ||
250 | " | ||
251 | //- /lib.rs | ||
252 | struct Foo {} | ||
253 | impl Foo { fn new() -> Foo {} } | ||
254 | fn main() { | ||
255 | Foo::ne<|>(); | ||
256 | } | ||
257 | ", | ||
258 | ) | ||
259 | } | 349 | } |
260 | |||
261 | } | 350 | } |
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_for.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_for.snap deleted file mode 100644 index e9b717a45..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_for.snap +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.119822026Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "quux", | ||
10 | source_range: [83; 83), | ||
11 | delete: [83; 83), | ||
12 | insert: "quux()$0", | ||
13 | kind: Function, | ||
14 | detail: "fn quux()", | ||
15 | }, | ||
16 | CompletionItem { | ||
17 | label: "x", | ||
18 | source_range: [83; 83), | ||
19 | delete: [83; 83), | ||
20 | insert: "x", | ||
21 | kind: Binding, | ||
22 | }, | ||
23 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_if_let.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_if_let.snap deleted file mode 100644 index f94477b43..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_if_let.snap +++ /dev/null | |||
@@ -1,31 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-07-23T16:11:48.828805910Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "a", | ||
10 | source_range: [214; 214), | ||
11 | delete: [214; 214), | ||
12 | insert: "a", | ||
13 | kind: Binding, | ||
14 | }, | ||
15 | CompletionItem { | ||
16 | label: "b", | ||
17 | source_range: [214; 214), | ||
18 | delete: [214; 214), | ||
19 | insert: "b", | ||
20 | kind: Binding, | ||
21 | detail: "i32", | ||
22 | }, | ||
23 | CompletionItem { | ||
24 | label: "quux", | ||
25 | source_range: [214; 214), | ||
26 | delete: [214; 214), | ||
27 | insert: "quux()$0", | ||
28 | kind: Function, | ||
29 | detail: "fn quux()", | ||
30 | }, | ||
31 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_let.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_let.snap deleted file mode 100644 index 590e2a820..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_let.snap +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-07-23T16:11:48.828811567Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "quux", | ||
10 | source_range: [79; 79), | ||
11 | delete: [79; 79), | ||
12 | insert: "quux($0)", | ||
13 | kind: Function, | ||
14 | detail: "fn quux(x: i32)", | ||
15 | }, | ||
16 | CompletionItem { | ||
17 | label: "x", | ||
18 | source_range: [79; 79), | ||
19 | delete: [79; 79), | ||
20 | insert: "x", | ||
21 | kind: Binding, | ||
22 | detail: "i32", | ||
23 | }, | ||
24 | CompletionItem { | ||
25 | label: "y", | ||
26 | source_range: [79; 79), | ||
27 | delete: [79; 79), | ||
28 | insert: "y", | ||
29 | kind: Binding, | ||
30 | detail: "i32", | ||
31 | }, | ||
32 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__completes_prelude.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__completes_prelude.snap deleted file mode 100644 index b339c6c5f..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__completes_prelude.snap +++ /dev/null | |||
@@ -1,30 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.139262926Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "Option", | ||
10 | source_range: [18; 18), | ||
11 | delete: [18; 18), | ||
12 | insert: "Option", | ||
13 | kind: Struct, | ||
14 | }, | ||
15 | CompletionItem { | ||
16 | label: "foo", | ||
17 | source_range: [18; 18), | ||
18 | delete: [18; 18), | ||
19 | insert: "foo()$0", | ||
20 | kind: Function, | ||
21 | detail: "fn foo()", | ||
22 | }, | ||
23 | CompletionItem { | ||
24 | label: "std", | ||
25 | source_range: [18; 18), | ||
26 | delete: [18; 18), | ||
27 | insert: "std", | ||
28 | kind: Module, | ||
29 | }, | ||
30 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_if_already_call.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_if_already_call.snap deleted file mode 100644 index 46bea2ccd..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_if_already_call.snap +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.158296242Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "frobnicate", | ||
10 | source_range: [35; 39), | ||
11 | delete: [35; 39), | ||
12 | insert: "frobnicate", | ||
13 | kind: Function, | ||
14 | detail: "fn frobnicate()", | ||
15 | }, | ||
16 | CompletionItem { | ||
17 | label: "main", | ||
18 | source_range: [35; 39), | ||
19 | delete: [35; 39), | ||
20 | insert: "main", | ||
21 | kind: Function, | ||
22 | detail: "fn main()", | ||
23 | }, | ||
24 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_if_already_call_assoc_fn.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_if_already_call_assoc_fn.snap deleted file mode 100644 index b09a6745e..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_if_already_call_assoc_fn.snap +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:44:10.920136527Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "new", | ||
10 | source_range: [67; 69), | ||
11 | delete: [67; 69), | ||
12 | insert: "new", | ||
13 | kind: Function, | ||
14 | detail: "fn new() -> Foo", | ||
15 | }, | ||
16 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_in_use_item.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_in_use_item.snap deleted file mode 100644 index 84ccc8160..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_render_function_parens_in_use_item.snap +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.154795561Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "foo", | ||
10 | source_range: [40; 41), | ||
11 | delete: [40; 41), | ||
12 | insert: "foo", | ||
13 | kind: Function, | ||
14 | detail: "pub fn foo()", | ||
15 | }, | ||
16 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_show_both_completions_for_shadowing.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_show_both_completions_for_shadowing.snap deleted file mode 100644 index 158a2e5b9..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__dont_show_both_completions_for_shadowing.snap +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-07-23T16:11:48.860949870Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "bar", | ||
10 | source_range: [126; 126), | ||
11 | delete: [126; 126), | ||
12 | insert: "bar", | ||
13 | kind: Binding, | ||
14 | detail: "i32", | ||
15 | }, | ||
16 | CompletionItem { | ||
17 | label: "foo", | ||
18 | source_range: [126; 126), | ||
19 | delete: [126; 126), | ||
20 | insert: "foo()$0", | ||
21 | kind: Function, | ||
22 | detail: "fn foo()", | ||
23 | }, | ||
24 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__extern_prelude.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__extern_prelude.snap deleted file mode 100644 index b9449a76c..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__extern_prelude.snap +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.123197049Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "other_crate", | ||
10 | source_range: [4; 4), | ||
11 | delete: [4; 4), | ||
12 | insert: "other_crate", | ||
13 | kind: Module, | ||
14 | }, | ||
15 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__generic_params.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__generic_params.snap deleted file mode 100644 index eb1a4151a..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__generic_params.snap +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.123825399Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "T", | ||
10 | source_range: [44; 44), | ||
11 | delete: [44; 44), | ||
12 | insert: "T", | ||
13 | kind: TypeParam, | ||
14 | }, | ||
15 | CompletionItem { | ||
16 | label: "quux", | ||
17 | source_range: [44; 44), | ||
18 | delete: [44; 44), | ||
19 | insert: "quux()$0", | ||
20 | kind: Function, | ||
21 | detail: "fn quux<T>()", | ||
22 | }, | ||
23 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__generic_params_in_struct.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__generic_params_in_struct.snap deleted file mode 100644 index 52f08267f..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__generic_params_in_struct.snap +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.130778739Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "T", | ||
10 | source_range: [46; 46), | ||
11 | delete: [46; 46), | ||
12 | insert: "T", | ||
13 | kind: TypeParam, | ||
14 | }, | ||
15 | CompletionItem { | ||
16 | label: "X", | ||
17 | source_range: [46; 46), | ||
18 | delete: [46; 46), | ||
19 | insert: "X", | ||
20 | kind: Struct, | ||
21 | }, | ||
22 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls1.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls1.snap deleted file mode 100644 index c795b9aae..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls1.snap +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.156115632Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "main", | ||
10 | source_range: [53; 56), | ||
11 | delete: [53; 56), | ||
12 | insert: "main()$0", | ||
13 | kind: Function, | ||
14 | detail: "fn main()", | ||
15 | }, | ||
16 | CompletionItem { | ||
17 | label: "no_args", | ||
18 | source_range: [53; 56), | ||
19 | delete: [53; 56), | ||
20 | insert: "no_args()$0", | ||
21 | kind: Function, | ||
22 | detail: "fn no_args()", | ||
23 | }, | ||
24 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls2.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls2.snap deleted file mode 100644 index b49a838e0..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls2.snap +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:44:10.916806744Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "main", | ||
10 | source_range: [72; 77), | ||
11 | delete: [72; 77), | ||
12 | insert: "main()$0", | ||
13 | kind: Function, | ||
14 | detail: "fn main()", | ||
15 | }, | ||
16 | CompletionItem { | ||
17 | label: "with_args", | ||
18 | source_range: [72; 77), | ||
19 | delete: [72; 77), | ||
20 | insert: "with_args($0)", | ||
21 | kind: Function, | ||
22 | detail: "fn with_args(x: i32, y: String)", | ||
23 | }, | ||
24 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls3.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls3.snap deleted file mode 100644 index b62cb7aa1..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__inserts_parens_for_function_calls3.snap +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:44:40.543731193Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "foo", | ||
10 | source_range: [139; 140), | ||
11 | delete: [139; 140), | ||
12 | insert: "foo()$0", | ||
13 | kind: Method, | ||
14 | detail: "fn foo(&self)", | ||
15 | }, | ||
16 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__module_items.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__module_items.snap deleted file mode 100644 index cee4898c3..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__module_items.snap +++ /dev/null | |||
@@ -1,30 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.133106898Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "Baz", | ||
10 | source_range: [89; 89), | ||
11 | delete: [89; 89), | ||
12 | insert: "Baz", | ||
13 | kind: Enum, | ||
14 | }, | ||
15 | CompletionItem { | ||
16 | label: "Foo", | ||
17 | source_range: [89; 89), | ||
18 | delete: [89; 89), | ||
19 | insert: "Foo", | ||
20 | kind: Struct, | ||
21 | }, | ||
22 | CompletionItem { | ||
23 | label: "quux", | ||
24 | source_range: [89; 89), | ||
25 | delete: [89; 89), | ||
26 | insert: "quux()$0", | ||
27 | kind: Function, | ||
28 | detail: "fn quux()", | ||
29 | }, | ||
30 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__module_items_in_nested_modules.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__module_items_in_nested_modules.snap deleted file mode 100644 index ce18e5bb7..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__module_items_in_nested_modules.snap +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.134417551Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "Bar", | ||
10 | source_range: [101; 101), | ||
11 | delete: [101; 101), | ||
12 | insert: "Bar", | ||
13 | kind: Struct, | ||
14 | }, | ||
15 | CompletionItem { | ||
16 | label: "quux", | ||
17 | source_range: [101; 101), | ||
18 | delete: [101; 101), | ||
19 | insert: "quux()$0", | ||
20 | kind: Function, | ||
21 | detail: "fn quux()", | ||
22 | }, | ||
23 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__return_type.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__return_type.snap deleted file mode 100644 index 16dd18431..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__return_type.snap +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.140648630Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "Foo", | ||
10 | source_range: [47; 47), | ||
11 | delete: [47; 47), | ||
12 | insert: "Foo", | ||
13 | kind: Struct, | ||
14 | }, | ||
15 | CompletionItem { | ||
16 | label: "x", | ||
17 | source_range: [47; 47), | ||
18 | delete: [47; 47), | ||
19 | insert: "x()$0", | ||
20 | kind: Function, | ||
21 | detail: "fn x()", | ||
22 | }, | ||
23 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__self_in_methods.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__self_in_methods.snap deleted file mode 100644 index b7bcbe864..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__self_in_methods.snap +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-07-23T16:11:48.859812318Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "Self", | ||
10 | source_range: [25; 25), | ||
11 | delete: [25; 25), | ||
12 | insert: "Self", | ||
13 | kind: TypeParam, | ||
14 | }, | ||
15 | CompletionItem { | ||
16 | label: "self", | ||
17 | source_range: [25; 25), | ||
18 | delete: [25; 25), | ||
19 | insert: "self", | ||
20 | kind: Binding, | ||
21 | detail: "&{unknown}", | ||
22 | }, | ||
23 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__should_not_complete_snippets_in_path.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__should_not_complete_snippets_in_path.snap deleted file mode 100644 index cb3278edf..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__should_not_complete_snippets_in_path.snap +++ /dev/null | |||
@@ -1,5 +0,0 @@ | |||
1 | Created: 2019-01-23T05:19:36.475253+00:00 | ||
2 | Creator: [email protected] | ||
3 | Source: crates/ra_ide_api/src/completion/completion_item.rs | ||
4 | |||
5 | [] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__should_not_complete_snippets_in_path2.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__should_not_complete_snippets_in_path2.snap deleted file mode 100644 index 62c8e3de9..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__should_not_complete_snippets_in_path2.snap +++ /dev/null | |||
@@ -1,5 +0,0 @@ | |||
1 | Created: 2019-01-23T05:19:36.476869+00:00 | ||
2 | Creator: [email protected] | ||
3 | Source: crates/ra_ide_api/src/completion/completion_item.rs | ||
4 | |||
5 | [] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__snippets_in_expressions.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__snippets_in_expressions.snap deleted file mode 100644 index 6f41bf76f..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__snippets_in_expressions.snap +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.141901047Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "pd", | ||
10 | source_range: [17; 17), | ||
11 | delete: [17; 17), | ||
12 | insert: "eprintln!(\"$0 = {:?}\", $0);", | ||
13 | kind: Snippet, | ||
14 | }, | ||
15 | CompletionItem { | ||
16 | label: "ppd", | ||
17 | source_range: [17; 17), | ||
18 | delete: [17; 17), | ||
19 | insert: "eprintln!(\"$0 = {:#?}\", $0);", | ||
20 | kind: Snippet, | ||
21 | }, | ||
22 | ] | ||
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__snippets_in_items.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__snippets_in_items.snap deleted file mode 100644 index 1eb0adebe..000000000 --- a/crates/ra_ide_api/src/completion/snapshots/completion_item__snippets_in_items.snap +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.149234118Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/completion/completion_item.rs | ||
5 | expression: kind_completions | ||
6 | --- | ||
7 | [ | ||
8 | CompletionItem { | ||
9 | label: "Test function", | ||
10 | source_range: [66; 66), | ||
11 | delete: [66; 66), | ||
12 | insert: "#[test]\nfn ${1:feature}() {\n $0\n}", | ||
13 | kind: Snippet, | ||
14 | lookup: "tfn", | ||
15 | }, | ||
16 | CompletionItem { | ||
17 | label: "pub(crate)", | ||
18 | source_range: [66; 66), | ||
19 | delete: [66; 66), | ||
20 | insert: "pub(crate) $0", | ||
21 | kind: Snippet, | ||
22 | }, | ||
23 | ] | ||
diff --git a/crates/ra_ide_api/src/display/snapshots/tests__file_structure.snap b/crates/ra_ide_api/src/display/snapshots/tests__file_structure.snap deleted file mode 100644 index 102efc026..000000000 --- a/crates/ra_ide_api/src/display/snapshots/tests__file_structure.snap +++ /dev/null | |||
@@ -1,191 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-06-28T20:46:18.274464142Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/display/structure.rs | ||
5 | expression: structure | ||
6 | --- | ||
7 | [ | ||
8 | StructureNode { | ||
9 | parent: None, | ||
10 | label: "Foo", | ||
11 | navigation_range: [8; 11), | ||
12 | node_range: [1; 26), | ||
13 | kind: STRUCT_DEF, | ||
14 | detail: None, | ||
15 | deprecated: false, | ||
16 | }, | ||
17 | StructureNode { | ||
18 | parent: Some( | ||
19 | 0, | ||
20 | ), | ||
21 | label: "x", | ||
22 | navigation_range: [18; 19), | ||
23 | node_range: [18; 24), | ||
24 | kind: NAMED_FIELD_DEF, | ||
25 | detail: Some( | ||
26 | "i32", | ||
27 | ), | ||
28 | deprecated: false, | ||
29 | }, | ||
30 | StructureNode { | ||
31 | parent: None, | ||
32 | label: "m", | ||
33 | navigation_range: [32; 33), | ||
34 | node_range: [28; 158), | ||
35 | kind: MODULE, | ||
36 | detail: None, | ||
37 | deprecated: false, | ||
38 | }, | ||
39 | StructureNode { | ||
40 | parent: Some( | ||
41 | 2, | ||
42 | ), | ||
43 | label: "bar1", | ||
44 | navigation_range: [43; 47), | ||
45 | node_range: [40; 52), | ||
46 | kind: FN_DEF, | ||
47 | detail: Some( | ||
48 | "fn()", | ||
49 | ), | ||
50 | deprecated: false, | ||
51 | }, | ||
52 | StructureNode { | ||
53 | parent: Some( | ||
54 | 2, | ||
55 | ), | ||
56 | label: "bar2", | ||
57 | navigation_range: [60; 64), | ||
58 | node_range: [57; 81), | ||
59 | kind: FN_DEF, | ||
60 | detail: Some( | ||
61 | "fn<T>(t: T) -> T", | ||
62 | ), | ||
63 | deprecated: false, | ||
64 | }, | ||
65 | StructureNode { | ||
66 | parent: Some( | ||
67 | 2, | ||
68 | ), | ||
69 | label: "bar3", | ||
70 | navigation_range: [89; 93), | ||
71 | node_range: [86; 156), | ||
72 | kind: FN_DEF, | ||
73 | detail: Some( | ||
74 | "fn<A, B>(a: A, b: B) -> Vec< u32 >", | ||
75 | ), | ||
76 | deprecated: false, | ||
77 | }, | ||
78 | StructureNode { | ||
79 | parent: None, | ||
80 | label: "E", | ||
81 | navigation_range: [165; 166), | ||
82 | node_range: [160; 180), | ||
83 | kind: ENUM_DEF, | ||
84 | detail: None, | ||
85 | deprecated: false, | ||
86 | }, | ||
87 | StructureNode { | ||
88 | parent: Some( | ||
89 | 6, | ||
90 | ), | ||
91 | label: "X", | ||
92 | navigation_range: [169; 170), | ||
93 | node_range: [169; 170), | ||
94 | kind: ENUM_VARIANT, | ||
95 | detail: None, | ||
96 | deprecated: false, | ||
97 | }, | ||
98 | StructureNode { | ||
99 | parent: Some( | ||
100 | 6, | ||
101 | ), | ||
102 | label: "Y", | ||
103 | navigation_range: [172; 173), | ||
104 | node_range: [172; 178), | ||
105 | kind: ENUM_VARIANT, | ||
106 | detail: None, | ||
107 | deprecated: false, | ||
108 | }, | ||
109 | StructureNode { | ||
110 | parent: None, | ||
111 | label: "T", | ||
112 | navigation_range: [186; 187), | ||
113 | node_range: [181; 193), | ||
114 | kind: TYPE_ALIAS_DEF, | ||
115 | detail: Some( | ||
116 | "()", | ||
117 | ), | ||
118 | deprecated: false, | ||
119 | }, | ||
120 | StructureNode { | ||
121 | parent: None, | ||
122 | label: "S", | ||
123 | navigation_range: [201; 202), | ||
124 | node_range: [194; 213), | ||
125 | kind: STATIC_DEF, | ||
126 | detail: Some( | ||
127 | "i32", | ||
128 | ), | ||
129 | deprecated: false, | ||
130 | }, | ||
131 | StructureNode { | ||
132 | parent: None, | ||
133 | label: "C", | ||
134 | navigation_range: [220; 221), | ||
135 | node_range: [214; 232), | ||
136 | kind: CONST_DEF, | ||
137 | detail: Some( | ||
138 | "i32", | ||
139 | ), | ||
140 | deprecated: false, | ||
141 | }, | ||
142 | StructureNode { | ||
143 | parent: None, | ||
144 | label: "impl E", | ||
145 | navigation_range: [239; 240), | ||
146 | node_range: [234; 243), | ||
147 | kind: IMPL_BLOCK, | ||
148 | detail: None, | ||
149 | deprecated: false, | ||
150 | }, | ||
151 | StructureNode { | ||
152 | parent: None, | ||
153 | label: "impl fmt::Debug for E", | ||
154 | navigation_range: [265; 266), | ||
155 | node_range: [245; 269), | ||
156 | kind: IMPL_BLOCK, | ||
157 | detail: None, | ||
158 | deprecated: false, | ||
159 | }, | ||
160 | StructureNode { | ||
161 | parent: None, | ||
162 | label: "mc", | ||
163 | navigation_range: [284; 286), | ||
164 | node_range: [271; 303), | ||
165 | kind: MACRO_CALL, | ||
166 | detail: None, | ||
167 | deprecated: false, | ||
168 | }, | ||
169 | StructureNode { | ||
170 | parent: None, | ||
171 | label: "obsolete", | ||
172 | navigation_range: [322; 330), | ||
173 | node_range: [305; 335), | ||
174 | kind: FN_DEF, | ||
175 | detail: Some( | ||
176 | "fn()", | ||
177 | ), | ||
178 | deprecated: true, | ||
179 | }, | ||
180 | StructureNode { | ||
181 | parent: None, | ||
182 | label: "very_obsolete", | ||
183 | navigation_range: [375; 388), | ||
184 | node_range: [337; 393), | ||
185 | kind: FN_DEF, | ||
186 | detail: Some( | ||
187 | "fn()", | ||
188 | ), | ||
189 | deprecated: true, | ||
190 | }, | ||
191 | ] | ||
diff --git a/crates/ra_ide_api/src/display/structure.rs b/crates/ra_ide_api/src/display/structure.rs index 2ba10b2ef..b026dfa59 100644 --- a/crates/ra_ide_api/src/display/structure.rs +++ b/crates/ra_ide_api/src/display/structure.rs | |||
@@ -204,6 +204,192 @@ fn very_obsolete() {} | |||
204 | .ok() | 204 | .ok() |
205 | .unwrap(); | 205 | .unwrap(); |
206 | let structure = file_structure(&file); | 206 | let structure = file_structure(&file); |
207 | assert_debug_snapshot_matches!("file_structure", structure); | 207 | assert_debug_snapshot_matches!(structure, |
208 | @r#"[ | ||
209 | StructureNode { | ||
210 | parent: None, | ||
211 | label: "Foo", | ||
212 | navigation_range: [8; 11), | ||
213 | node_range: [1; 26), | ||
214 | kind: STRUCT_DEF, | ||
215 | detail: None, | ||
216 | deprecated: false, | ||
217 | }, | ||
218 | StructureNode { | ||
219 | parent: Some( | ||
220 | 0, | ||
221 | ), | ||
222 | label: "x", | ||
223 | navigation_range: [18; 19), | ||
224 | node_range: [18; 24), | ||
225 | kind: NAMED_FIELD_DEF, | ||
226 | detail: Some( | ||
227 | "i32", | ||
228 | ), | ||
229 | deprecated: false, | ||
230 | }, | ||
231 | StructureNode { | ||
232 | parent: None, | ||
233 | label: "m", | ||
234 | navigation_range: [32; 33), | ||
235 | node_range: [28; 158), | ||
236 | kind: MODULE, | ||
237 | detail: None, | ||
238 | deprecated: false, | ||
239 | }, | ||
240 | StructureNode { | ||
241 | parent: Some( | ||
242 | 2, | ||
243 | ), | ||
244 | label: "bar1", | ||
245 | navigation_range: [43; 47), | ||
246 | node_range: [40; 52), | ||
247 | kind: FN_DEF, | ||
248 | detail: Some( | ||
249 | "fn()", | ||
250 | ), | ||
251 | deprecated: false, | ||
252 | }, | ||
253 | StructureNode { | ||
254 | parent: Some( | ||
255 | 2, | ||
256 | ), | ||
257 | label: "bar2", | ||
258 | navigation_range: [60; 64), | ||
259 | node_range: [57; 81), | ||
260 | kind: FN_DEF, | ||
261 | detail: Some( | ||
262 | "fn<T>(t: T) -> T", | ||
263 | ), | ||
264 | deprecated: false, | ||
265 | }, | ||
266 | StructureNode { | ||
267 | parent: Some( | ||
268 | 2, | ||
269 | ), | ||
270 | label: "bar3", | ||
271 | navigation_range: [89; 93), | ||
272 | node_range: [86; 156), | ||
273 | kind: FN_DEF, | ||
274 | detail: Some( | ||
275 | "fn<A, B>(a: A, b: B) -> Vec< u32 >", | ||
276 | ), | ||
277 | deprecated: false, | ||
278 | }, | ||
279 | StructureNode { | ||
280 | parent: None, | ||
281 | label: "E", | ||
282 | navigation_range: [165; 166), | ||
283 | node_range: [160; 180), | ||
284 | kind: ENUM_DEF, | ||
285 | detail: None, | ||
286 | deprecated: false, | ||
287 | }, | ||
288 | StructureNode { | ||
289 | parent: Some( | ||
290 | 6, | ||
291 | ), | ||
292 | label: "X", | ||
293 | navigation_range: [169; 170), | ||
294 | node_range: [169; 170), | ||
295 | kind: ENUM_VARIANT, | ||
296 | detail: None, | ||
297 | deprecated: false, | ||
298 | }, | ||
299 | StructureNode { | ||
300 | parent: Some( | ||
301 | 6, | ||
302 | ), | ||
303 | label: "Y", | ||
304 | navigation_range: [172; 173), | ||
305 | node_range: [172; 178), | ||
306 | kind: ENUM_VARIANT, | ||
307 | detail: None, | ||
308 | deprecated: false, | ||
309 | }, | ||
310 | StructureNode { | ||
311 | parent: None, | ||
312 | label: "T", | ||
313 | navigation_range: [186; 187), | ||
314 | node_range: [181; 193), | ||
315 | kind: TYPE_ALIAS_DEF, | ||
316 | detail: Some( | ||
317 | "()", | ||
318 | ), | ||
319 | deprecated: false, | ||
320 | }, | ||
321 | StructureNode { | ||
322 | parent: None, | ||
323 | label: "S", | ||
324 | navigation_range: [201; 202), | ||
325 | node_range: [194; 213), | ||
326 | kind: STATIC_DEF, | ||
327 | detail: Some( | ||
328 | "i32", | ||
329 | ), | ||
330 | deprecated: false, | ||
331 | }, | ||
332 | StructureNode { | ||
333 | parent: None, | ||
334 | label: "C", | ||
335 | navigation_range: [220; 221), | ||
336 | node_range: [214; 232), | ||
337 | kind: CONST_DEF, | ||
338 | detail: Some( | ||
339 | "i32", | ||
340 | ), | ||
341 | deprecated: false, | ||
342 | }, | ||
343 | StructureNode { | ||
344 | parent: None, | ||
345 | label: "impl E", | ||
346 | navigation_range: [239; 240), | ||
347 | node_range: [234; 243), | ||
348 | kind: IMPL_BLOCK, | ||
349 | detail: None, | ||
350 | deprecated: false, | ||
351 | }, | ||
352 | StructureNode { | ||
353 | parent: None, | ||
354 | label: "impl fmt::Debug for E", | ||
355 | navigation_range: [265; 266), | ||
356 | node_range: [245; 269), | ||
357 | kind: IMPL_BLOCK, | ||
358 | detail: None, | ||
359 | deprecated: false, | ||
360 | }, | ||
361 | StructureNode { | ||
362 | parent: None, | ||
363 | label: "mc", | ||
364 | navigation_range: [284; 286), | ||
365 | node_range: [271; 303), | ||
366 | kind: MACRO_CALL, | ||
367 | detail: None, | ||
368 | deprecated: false, | ||
369 | }, | ||
370 | StructureNode { | ||
371 | parent: None, | ||
372 | label: "obsolete", | ||
373 | navigation_range: [322; 330), | ||
374 | node_range: [305; 335), | ||
375 | kind: FN_DEF, | ||
376 | detail: Some( | ||
377 | "fn()", | ||
378 | ), | ||
379 | deprecated: true, | ||
380 | }, | ||
381 | StructureNode { | ||
382 | parent: None, | ||
383 | label: "very_obsolete", | ||
384 | navigation_range: [375; 388), | ||
385 | node_range: [337; 393), | ||
386 | kind: FN_DEF, | ||
387 | detail: Some( | ||
388 | "fn()", | ||
389 | ), | ||
390 | deprecated: true, | ||
391 | }, | ||
392 | ]"# | ||
393 | ); | ||
208 | } | 394 | } |
209 | } | 395 | } |
diff --git a/crates/ra_ide_api/src/references.rs b/crates/ra_ide_api/src/references.rs index 89984e642..2118e7ad3 100644 --- a/crates/ra_ide_api/src/references.rs +++ b/crates/ra_ide_api/src/references.rs | |||
@@ -341,7 +341,39 @@ mod tests { | |||
341 | ); | 341 | ); |
342 | let new_name = "foo2"; | 342 | let new_name = "foo2"; |
343 | let source_change = analysis.rename(position, new_name).unwrap(); | 343 | let source_change = analysis.rename(position, new_name).unwrap(); |
344 | assert_debug_snapshot_matches!("rename_mod", &source_change); | 344 | assert_debug_snapshot_matches!(&source_change, |
345 | @r#"Some( | ||
346 | SourceChange { | ||
347 | label: "rename", | ||
348 | source_file_edits: [ | ||
349 | SourceFileEdit { | ||
350 | file_id: FileId( | ||
351 | 2, | ||
352 | ), | ||
353 | edit: TextEdit { | ||
354 | atoms: [ | ||
355 | AtomTextEdit { | ||
356 | delete: [4; 7), | ||
357 | insert: "foo2", | ||
358 | }, | ||
359 | ], | ||
360 | }, | ||
361 | }, | ||
362 | ], | ||
363 | file_system_edits: [ | ||
364 | MoveFile { | ||
365 | src: FileId( | ||
366 | 3, | ||
367 | ), | ||
368 | dst_source_root: SourceRootId( | ||
369 | 0, | ||
370 | ), | ||
371 | dst_path: "bar/foo2.rs", | ||
372 | }, | ||
373 | ], | ||
374 | cursor_position: None, | ||
375 | }, | ||
376 | )"#); | ||
345 | } | 377 | } |
346 | 378 | ||
347 | #[test] | 379 | #[test] |
@@ -356,7 +388,40 @@ mod tests { | |||
356 | ); | 388 | ); |
357 | let new_name = "foo2"; | 389 | let new_name = "foo2"; |
358 | let source_change = analysis.rename(position, new_name).unwrap(); | 390 | let source_change = analysis.rename(position, new_name).unwrap(); |
359 | assert_debug_snapshot_matches!("rename_mod_in_dir", &source_change); | 391 | assert_debug_snapshot_matches!(&source_change, |
392 | @r###"Some( | ||
393 | SourceChange { | ||
394 | label: "rename", | ||
395 | source_file_edits: [ | ||
396 | SourceFileEdit { | ||
397 | file_id: FileId( | ||
398 | 1, | ||
399 | ), | ||
400 | edit: TextEdit { | ||
401 | atoms: [ | ||
402 | AtomTextEdit { | ||
403 | delete: [4; 7), | ||
404 | insert: "foo2", | ||
405 | }, | ||
406 | ], | ||
407 | }, | ||
408 | }, | ||
409 | ], | ||
410 | file_system_edits: [ | ||
411 | MoveFile { | ||
412 | src: FileId( | ||
413 | 2, | ||
414 | ), | ||
415 | dst_source_root: SourceRootId( | ||
416 | 0, | ||
417 | ), | ||
418 | dst_path: "foo2/mod.rs", | ||
419 | }, | ||
420 | ], | ||
421 | cursor_position: None, | ||
422 | }, | ||
423 | )"### | ||
424 | ); | ||
360 | } | 425 | } |
361 | 426 | ||
362 | fn test_rename(text: &str, new_name: &str, expected: &str) { | 427 | fn test_rename(text: &str, new_name: &str, expected: &str) { |
diff --git a/crates/ra_ide_api/src/runnables.rs b/crates/ra_ide_api/src/runnables.rs index 07412a9ef..09c082de9 100644 --- a/crates/ra_ide_api/src/runnables.rs +++ b/crates/ra_ide_api/src/runnables.rs | |||
@@ -92,7 +92,26 @@ mod tests { | |||
92 | "#, | 92 | "#, |
93 | ); | 93 | ); |
94 | let runnables = analysis.runnables(pos.file_id).unwrap(); | 94 | let runnables = analysis.runnables(pos.file_id).unwrap(); |
95 | assert_debug_snapshot_matches!("runnables", &runnables) | 95 | assert_debug_snapshot_matches!(&runnables, |
96 | @r#"[ | ||
97 | Runnable { | ||
98 | range: [1; 21), | ||
99 | kind: Bin, | ||
100 | }, | ||
101 | Runnable { | ||
102 | range: [22; 46), | ||
103 | kind: Test { | ||
104 | name: "test_foo", | ||
105 | }, | ||
106 | }, | ||
107 | Runnable { | ||
108 | range: [47; 81), | ||
109 | kind: Test { | ||
110 | name: "test_foo", | ||
111 | }, | ||
112 | }, | ||
113 | ]"# | ||
114 | ); | ||
96 | } | 115 | } |
97 | 116 | ||
98 | #[test] | 117 | #[test] |
@@ -108,7 +127,22 @@ mod tests { | |||
108 | "#, | 127 | "#, |
109 | ); | 128 | ); |
110 | let runnables = analysis.runnables(pos.file_id).unwrap(); | 129 | let runnables = analysis.runnables(pos.file_id).unwrap(); |
111 | assert_debug_snapshot_matches!("runnables_module", &runnables) | 130 | assert_debug_snapshot_matches!(&runnables, |
131 | @r#"[ | ||
132 | Runnable { | ||
133 | range: [1; 59), | ||
134 | kind: TestMod { | ||
135 | path: "test_mod", | ||
136 | }, | ||
137 | }, | ||
138 | Runnable { | ||
139 | range: [28; 57), | ||
140 | kind: Test { | ||
141 | name: "test_foo1", | ||
142 | }, | ||
143 | }, | ||
144 | ]"# | ||
145 | ); | ||
112 | } | 146 | } |
113 | 147 | ||
114 | #[test] | 148 | #[test] |
@@ -126,7 +160,22 @@ mod tests { | |||
126 | "#, | 160 | "#, |
127 | ); | 161 | ); |
128 | let runnables = analysis.runnables(pos.file_id).unwrap(); | 162 | let runnables = analysis.runnables(pos.file_id).unwrap(); |
129 | assert_debug_snapshot_matches!("runnables_one_depth_layer_module", &runnables) | 163 | assert_debug_snapshot_matches!(&runnables, |
164 | @r#"[ | ||
165 | Runnable { | ||
166 | range: [23; 85), | ||
167 | kind: TestMod { | ||
168 | path: "foo::test_mod", | ||
169 | }, | ||
170 | }, | ||
171 | Runnable { | ||
172 | range: [46; 79), | ||
173 | kind: Test { | ||
174 | name: "test_foo1", | ||
175 | }, | ||
176 | }, | ||
177 | ]"# | ||
178 | ); | ||
130 | } | 179 | } |
131 | 180 | ||
132 | #[test] | 181 | #[test] |
@@ -146,7 +195,22 @@ mod tests { | |||
146 | "#, | 195 | "#, |
147 | ); | 196 | ); |
148 | let runnables = analysis.runnables(pos.file_id).unwrap(); | 197 | let runnables = analysis.runnables(pos.file_id).unwrap(); |
149 | assert_debug_snapshot_matches!("runnables_multiple_depth_module", &runnables) | 198 | assert_debug_snapshot_matches!(&runnables, |
199 | @r#"[ | ||
200 | Runnable { | ||
201 | range: [41; 115), | ||
202 | kind: TestMod { | ||
203 | path: "foo::bar::test_mod", | ||
204 | }, | ||
205 | }, | ||
206 | Runnable { | ||
207 | range: [68; 105), | ||
208 | kind: Test { | ||
209 | name: "test_foo1", | ||
210 | }, | ||
211 | }, | ||
212 | ]"# | ||
213 | ); | ||
150 | } | 214 | } |
151 | 215 | ||
152 | #[test] | 216 | #[test] |
diff --git a/crates/ra_ide_api/src/snapshots/tests__highlights_code_inside_macros.snap b/crates/ra_ide_api/src/snapshots/tests__highlights_code_inside_macros.snap deleted file mode 100644 index ae8923e75..000000000 --- a/crates/ra_ide_api/src/snapshots/tests__highlights_code_inside_macros.snap +++ /dev/null | |||
@@ -1,44 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-02-01T07:46:59.130146403+00:00" | ||
3 | creator: [email protected] | ||
4 | expression: "&highlights" | ||
5 | source: crates/ra_ide_api/src/syntax_highlighting.rs | ||
6 | --- | ||
7 | [ | ||
8 | HighlightedRange { | ||
9 | range: [13; 15), | ||
10 | tag: "keyword" | ||
11 | }, | ||
12 | HighlightedRange { | ||
13 | range: [16; 20), | ||
14 | tag: "function" | ||
15 | }, | ||
16 | HighlightedRange { | ||
17 | range: [41; 45), | ||
18 | tag: "macro" | ||
19 | }, | ||
20 | HighlightedRange { | ||
21 | range: [48; 51), | ||
22 | tag: "keyword" | ||
23 | }, | ||
24 | HighlightedRange { | ||
25 | range: [56; 58), | ||
26 | tag: "literal" | ||
27 | }, | ||
28 | HighlightedRange { | ||
29 | range: [48; 51), | ||
30 | tag: "keyword" | ||
31 | }, | ||
32 | HighlightedRange { | ||
33 | range: [52; 53), | ||
34 | tag: "function" | ||
35 | }, | ||
36 | HighlightedRange { | ||
37 | range: [56; 58), | ||
38 | tag: "literal" | ||
39 | }, | ||
40 | HighlightedRange { | ||
41 | range: [60; 61), | ||
42 | tag: "text" | ||
43 | } | ||
44 | ] | ||
diff --git a/crates/ra_ide_api/src/snapshots/tests__rename_mod.snap b/crates/ra_ide_api/src/snapshots/tests__rename_mod.snap deleted file mode 100644 index 431de5c55..000000000 --- a/crates/ra_ide_api/src/snapshots/tests__rename_mod.snap +++ /dev/null | |||
@@ -1,38 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.215905447Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/references.rs | ||
5 | expression: "&source_change" | ||
6 | --- | ||
7 | Some( | ||
8 | SourceChange { | ||
9 | label: "rename", | ||
10 | source_file_edits: [ | ||
11 | SourceFileEdit { | ||
12 | file_id: FileId( | ||
13 | 2, | ||
14 | ), | ||
15 | edit: TextEdit { | ||
16 | atoms: [ | ||
17 | AtomTextEdit { | ||
18 | delete: [4; 7), | ||
19 | insert: "foo2", | ||
20 | }, | ||
21 | ], | ||
22 | }, | ||
23 | }, | ||
24 | ], | ||
25 | file_system_edits: [ | ||
26 | MoveFile { | ||
27 | src: FileId( | ||
28 | 3, | ||
29 | ), | ||
30 | dst_source_root: SourceRootId( | ||
31 | 0, | ||
32 | ), | ||
33 | dst_path: "bar/foo2.rs", | ||
34 | }, | ||
35 | ], | ||
36 | cursor_position: None, | ||
37 | }, | ||
38 | ) | ||
diff --git a/crates/ra_ide_api/src/snapshots/tests__rename_mod_in_dir.snap b/crates/ra_ide_api/src/snapshots/tests__rename_mod_in_dir.snap deleted file mode 100644 index aaff9b4b5..000000000 --- a/crates/ra_ide_api/src/snapshots/tests__rename_mod_in_dir.snap +++ /dev/null | |||
@@ -1,38 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.213830371Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/references.rs | ||
5 | expression: "&source_change" | ||
6 | --- | ||
7 | Some( | ||
8 | SourceChange { | ||
9 | label: "rename", | ||
10 | source_file_edits: [ | ||
11 | SourceFileEdit { | ||
12 | file_id: FileId( | ||
13 | 1, | ||
14 | ), | ||
15 | edit: TextEdit { | ||
16 | atoms: [ | ||
17 | AtomTextEdit { | ||
18 | delete: [4; 7), | ||
19 | insert: "foo2", | ||
20 | }, | ||
21 | ], | ||
22 | }, | ||
23 | }, | ||
24 | ], | ||
25 | file_system_edits: [ | ||
26 | MoveFile { | ||
27 | src: FileId( | ||
28 | 2, | ||
29 | ), | ||
30 | dst_source_root: SourceRootId( | ||
31 | 0, | ||
32 | ), | ||
33 | dst_path: "foo2/mod.rs", | ||
34 | }, | ||
35 | ], | ||
36 | cursor_position: None, | ||
37 | }, | ||
38 | ) | ||
diff --git a/crates/ra_ide_api/src/snapshots/tests__runnables.snap b/crates/ra_ide_api/src/snapshots/tests__runnables.snap deleted file mode 100644 index de2fadd7f..000000000 --- a/crates/ra_ide_api/src/snapshots/tests__runnables.snap +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.217100106Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/runnables.rs | ||
5 | expression: "&runnables" | ||
6 | --- | ||
7 | [ | ||
8 | Runnable { | ||
9 | range: [1; 21), | ||
10 | kind: Bin, | ||
11 | }, | ||
12 | Runnable { | ||
13 | range: [22; 46), | ||
14 | kind: Test { | ||
15 | name: "test_foo", | ||
16 | }, | ||
17 | }, | ||
18 | Runnable { | ||
19 | range: [47; 81), | ||
20 | kind: Test { | ||
21 | name: "test_foo", | ||
22 | }, | ||
23 | }, | ||
24 | ] | ||
diff --git a/crates/ra_ide_api/src/snapshots/tests__runnables_module.snap b/crates/ra_ide_api/src/snapshots/tests__runnables_module.snap deleted file mode 100644 index 23993a97f..000000000 --- a/crates/ra_ide_api/src/snapshots/tests__runnables_module.snap +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.219258850Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/runnables.rs | ||
5 | expression: "&runnables" | ||
6 | --- | ||
7 | [ | ||
8 | Runnable { | ||
9 | range: [1; 59), | ||
10 | kind: TestMod { | ||
11 | path: "test_mod", | ||
12 | }, | ||
13 | }, | ||
14 | Runnable { | ||
15 | range: [28; 57), | ||
16 | kind: Test { | ||
17 | name: "test_foo1", | ||
18 | }, | ||
19 | }, | ||
20 | ] | ||
diff --git a/crates/ra_ide_api/src/snapshots/tests__runnables_multiple_depth_module.snap b/crates/ra_ide_api/src/snapshots/tests__runnables_multiple_depth_module.snap deleted file mode 100644 index c516a61df..000000000 --- a/crates/ra_ide_api/src/snapshots/tests__runnables_multiple_depth_module.snap +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.219671663Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/runnables.rs | ||
5 | expression: "&runnables" | ||
6 | --- | ||
7 | [ | ||
8 | Runnable { | ||
9 | range: [41; 115), | ||
10 | kind: TestMod { | ||
11 | path: "foo::bar::test_mod", | ||
12 | }, | ||
13 | }, | ||
14 | Runnable { | ||
15 | range: [68; 105), | ||
16 | kind: Test { | ||
17 | name: "test_foo1", | ||
18 | }, | ||
19 | }, | ||
20 | ] | ||
diff --git a/crates/ra_ide_api/src/snapshots/tests__runnables_one_depth_layer_module.snap b/crates/ra_ide_api/src/snapshots/tests__runnables_one_depth_layer_module.snap deleted file mode 100644 index b02e6707e..000000000 --- a/crates/ra_ide_api/src/snapshots/tests__runnables_one_depth_layer_module.snap +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | --- | ||
2 | created: "2019-05-23T22:23:35.224315047Z" | ||
3 | creator: [email protected] | ||
4 | source: crates/ra_ide_api/src/runnables.rs | ||
5 | expression: "&runnables" | ||
6 | --- | ||
7 | [ | ||
8 | Runnable { | ||
9 | range: [23; 85), | ||
10 | kind: TestMod { | ||
11 | path: "foo::test_mod", | ||
12 | }, | ||
13 | }, | ||
14 | Runnable { | ||
15 | range: [46; 79), | ||
16 | kind: Test { | ||
17 | name: "test_foo1", | ||
18 | }, | ||
19 | }, | ||
20 | ] | ||