diff options
Diffstat (limited to 'crates/ide_assists/src/tests/generated.rs')
-rw-r--r-- | crates/ide_assists/src/tests/generated.rs | 1410 |
1 files changed, 1410 insertions, 0 deletions
diff --git a/crates/ide_assists/src/tests/generated.rs b/crates/ide_assists/src/tests/generated.rs new file mode 100644 index 000000000..4f007aa48 --- /dev/null +++ b/crates/ide_assists/src/tests/generated.rs | |||
@@ -0,0 +1,1410 @@ | |||
1 | //! Generated file, do not edit by hand, see `xtask/src/codegen` | ||
2 | |||
3 | use super::check_doc_test; | ||
4 | |||
5 | #[test] | ||
6 | fn doctest_add_explicit_type() { | ||
7 | check_doc_test( | ||
8 | "add_explicit_type", | ||
9 | r#####" | ||
10 | fn main() { | ||
11 | let x$0 = 92; | ||
12 | } | ||
13 | "#####, | ||
14 | r#####" | ||
15 | fn main() { | ||
16 | let x: i32 = 92; | ||
17 | } | ||
18 | "#####, | ||
19 | ) | ||
20 | } | ||
21 | |||
22 | #[test] | ||
23 | fn doctest_add_hash() { | ||
24 | check_doc_test( | ||
25 | "add_hash", | ||
26 | r#####" | ||
27 | fn main() { | ||
28 | r#"Hello,$0 World!"#; | ||
29 | } | ||
30 | "#####, | ||
31 | r#####" | ||
32 | fn main() { | ||
33 | r##"Hello, World!"##; | ||
34 | } | ||
35 | "#####, | ||
36 | ) | ||
37 | } | ||
38 | |||
39 | #[test] | ||
40 | fn doctest_add_impl_default_members() { | ||
41 | check_doc_test( | ||
42 | "add_impl_default_members", | ||
43 | r#####" | ||
44 | trait Trait { | ||
45 | type X; | ||
46 | fn foo(&self); | ||
47 | fn bar(&self) {} | ||
48 | } | ||
49 | |||
50 | impl Trait for () { | ||
51 | type X = (); | ||
52 | fn foo(&self) {}$0 | ||
53 | |||
54 | } | ||
55 | "#####, | ||
56 | r#####" | ||
57 | trait Trait { | ||
58 | type X; | ||
59 | fn foo(&self); | ||
60 | fn bar(&self) {} | ||
61 | } | ||
62 | |||
63 | impl Trait for () { | ||
64 | type X = (); | ||
65 | fn foo(&self) {} | ||
66 | |||
67 | $0fn bar(&self) {} | ||
68 | } | ||
69 | "#####, | ||
70 | ) | ||
71 | } | ||
72 | |||
73 | #[test] | ||
74 | fn doctest_add_impl_missing_members() { | ||
75 | check_doc_test( | ||
76 | "add_impl_missing_members", | ||
77 | r#####" | ||
78 | trait Trait<T> { | ||
79 | type X; | ||
80 | fn foo(&self) -> T; | ||
81 | fn bar(&self) {} | ||
82 | } | ||
83 | |||
84 | impl Trait<u32> for () {$0 | ||
85 | |||
86 | } | ||
87 | "#####, | ||
88 | r#####" | ||
89 | trait Trait<T> { | ||
90 | type X; | ||
91 | fn foo(&self) -> T; | ||
92 | fn bar(&self) {} | ||
93 | } | ||
94 | |||
95 | impl Trait<u32> for () { | ||
96 | $0type X; | ||
97 | |||
98 | fn foo(&self) -> u32 { | ||
99 | todo!() | ||
100 | } | ||
101 | } | ||
102 | "#####, | ||
103 | ) | ||
104 | } | ||
105 | |||
106 | #[test] | ||
107 | fn doctest_add_lifetime_to_type() { | ||
108 | check_doc_test( | ||
109 | "add_lifetime_to_type", | ||
110 | r#####" | ||
111 | struct Point { | ||
112 | x: &$0u32, | ||
113 | y: u32, | ||
114 | } | ||
115 | "#####, | ||
116 | r#####" | ||
117 | struct Point<'a> { | ||
118 | x: &'a u32, | ||
119 | y: u32, | ||
120 | } | ||
121 | "#####, | ||
122 | ) | ||
123 | } | ||
124 | |||
125 | #[test] | ||
126 | fn doctest_add_turbo_fish() { | ||
127 | check_doc_test( | ||
128 | "add_turbo_fish", | ||
129 | r#####" | ||
130 | fn make<T>() -> T { todo!() } | ||
131 | fn main() { | ||
132 | let x = make$0(); | ||
133 | } | ||
134 | "#####, | ||
135 | r#####" | ||
136 | fn make<T>() -> T { todo!() } | ||
137 | fn main() { | ||
138 | let x = make::<${0:_}>(); | ||
139 | } | ||
140 | "#####, | ||
141 | ) | ||
142 | } | ||
143 | |||
144 | #[test] | ||
145 | fn doctest_apply_demorgan() { | ||
146 | check_doc_test( | ||
147 | "apply_demorgan", | ||
148 | r#####" | ||
149 | fn main() { | ||
150 | if x != 4 ||$0 y < 3.14 {} | ||
151 | } | ||
152 | "#####, | ||
153 | r#####" | ||
154 | fn main() { | ||
155 | if !(x == 4 && !(y < 3.14)) {} | ||
156 | } | ||
157 | "#####, | ||
158 | ) | ||
159 | } | ||
160 | |||
161 | #[test] | ||
162 | fn doctest_auto_import() { | ||
163 | check_doc_test( | ||
164 | "auto_import", | ||
165 | r#####" | ||
166 | fn main() { | ||
167 | let map = HashMap$0::new(); | ||
168 | } | ||
169 | pub mod std { pub mod collections { pub struct HashMap { } } } | ||
170 | "#####, | ||
171 | r#####" | ||
172 | use std::collections::HashMap; | ||
173 | |||
174 | fn main() { | ||
175 | let map = HashMap::new(); | ||
176 | } | ||
177 | pub mod std { pub mod collections { pub struct HashMap { } } } | ||
178 | "#####, | ||
179 | ) | ||
180 | } | ||
181 | |||
182 | #[test] | ||
183 | fn doctest_change_visibility() { | ||
184 | check_doc_test( | ||
185 | "change_visibility", | ||
186 | r#####" | ||
187 | $0fn frobnicate() {} | ||
188 | "#####, | ||
189 | r#####" | ||
190 | pub(crate) fn frobnicate() {} | ||
191 | "#####, | ||
192 | ) | ||
193 | } | ||
194 | |||
195 | #[test] | ||
196 | fn doctest_convert_integer_literal() { | ||
197 | check_doc_test( | ||
198 | "convert_integer_literal", | ||
199 | r#####" | ||
200 | const _: i32 = 10$0; | ||
201 | "#####, | ||
202 | r#####" | ||
203 | const _: i32 = 0b1010; | ||
204 | "#####, | ||
205 | ) | ||
206 | } | ||
207 | |||
208 | #[test] | ||
209 | fn doctest_convert_to_guarded_return() { | ||
210 | check_doc_test( | ||
211 | "convert_to_guarded_return", | ||
212 | r#####" | ||
213 | fn main() { | ||
214 | $0if cond { | ||
215 | foo(); | ||
216 | bar(); | ||
217 | } | ||
218 | } | ||
219 | "#####, | ||
220 | r#####" | ||
221 | fn main() { | ||
222 | if !cond { | ||
223 | return; | ||
224 | } | ||
225 | foo(); | ||
226 | bar(); | ||
227 | } | ||
228 | "#####, | ||
229 | ) | ||
230 | } | ||
231 | |||
232 | #[test] | ||
233 | fn doctest_expand_glob_import() { | ||
234 | check_doc_test( | ||
235 | "expand_glob_import", | ||
236 | r#####" | ||
237 | mod foo { | ||
238 | pub struct Bar; | ||
239 | pub struct Baz; | ||
240 | } | ||
241 | |||
242 | use foo::*$0; | ||
243 | |||
244 | fn qux(bar: Bar, baz: Baz) {} | ||
245 | "#####, | ||
246 | r#####" | ||
247 | mod foo { | ||
248 | pub struct Bar; | ||
249 | pub struct Baz; | ||
250 | } | ||
251 | |||
252 | use foo::{Baz, Bar}; | ||
253 | |||
254 | fn qux(bar: Bar, baz: Baz) {} | ||
255 | "#####, | ||
256 | ) | ||
257 | } | ||
258 | |||
259 | #[test] | ||
260 | fn doctest_extract_function() { | ||
261 | check_doc_test( | ||
262 | "extract_function", | ||
263 | r#####" | ||
264 | fn main() { | ||
265 | let n = 1; | ||
266 | $0let m = n + 2; | ||
267 | let k = m + n;$0 | ||
268 | let g = 3; | ||
269 | } | ||
270 | "#####, | ||
271 | r#####" | ||
272 | fn main() { | ||
273 | let n = 1; | ||
274 | fun_name(n); | ||
275 | let g = 3; | ||
276 | } | ||
277 | |||
278 | fn $0fun_name(n: i32) { | ||
279 | let m = n + 2; | ||
280 | let k = m + n; | ||
281 | } | ||
282 | "#####, | ||
283 | ) | ||
284 | } | ||
285 | |||
286 | #[test] | ||
287 | fn doctest_extract_struct_from_enum_variant() { | ||
288 | check_doc_test( | ||
289 | "extract_struct_from_enum_variant", | ||
290 | r#####" | ||
291 | enum A { $0One(u32, u32) } | ||
292 | "#####, | ||
293 | r#####" | ||
294 | struct One(pub u32, pub u32); | ||
295 | |||
296 | enum A { One(One) } | ||
297 | "#####, | ||
298 | ) | ||
299 | } | ||
300 | |||
301 | #[test] | ||
302 | fn doctest_extract_variable() { | ||
303 | check_doc_test( | ||
304 | "extract_variable", | ||
305 | r#####" | ||
306 | fn main() { | ||
307 | $0(1 + 2)$0 * 4; | ||
308 | } | ||
309 | "#####, | ||
310 | r#####" | ||
311 | fn main() { | ||
312 | let $0var_name = (1 + 2); | ||
313 | var_name * 4; | ||
314 | } | ||
315 | "#####, | ||
316 | ) | ||
317 | } | ||
318 | |||
319 | #[test] | ||
320 | fn doctest_fill_match_arms() { | ||
321 | check_doc_test( | ||
322 | "fill_match_arms", | ||
323 | r#####" | ||
324 | enum Action { Move { distance: u32 }, Stop } | ||
325 | |||
326 | fn handle(action: Action) { | ||
327 | match action { | ||
328 | $0 | ||
329 | } | ||
330 | } | ||
331 | "#####, | ||
332 | r#####" | ||
333 | enum Action { Move { distance: u32 }, Stop } | ||
334 | |||
335 | fn handle(action: Action) { | ||
336 | match action { | ||
337 | $0Action::Move { distance } => {} | ||
338 | Action::Stop => {} | ||
339 | } | ||
340 | } | ||
341 | "#####, | ||
342 | ) | ||
343 | } | ||
344 | |||
345 | #[test] | ||
346 | fn doctest_fix_visibility() { | ||
347 | check_doc_test( | ||
348 | "fix_visibility", | ||
349 | r#####" | ||
350 | mod m { | ||
351 | fn frobnicate() {} | ||
352 | } | ||
353 | fn main() { | ||
354 | m::frobnicate$0() {} | ||
355 | } | ||
356 | "#####, | ||
357 | r#####" | ||
358 | mod m { | ||
359 | $0pub(crate) fn frobnicate() {} | ||
360 | } | ||
361 | fn main() { | ||
362 | m::frobnicate() {} | ||
363 | } | ||
364 | "#####, | ||
365 | ) | ||
366 | } | ||
367 | |||
368 | #[test] | ||
369 | fn doctest_flip_binexpr() { | ||
370 | check_doc_test( | ||
371 | "flip_binexpr", | ||
372 | r#####" | ||
373 | fn main() { | ||
374 | let _ = 90 +$0 2; | ||
375 | } | ||
376 | "#####, | ||
377 | r#####" | ||
378 | fn main() { | ||
379 | let _ = 2 + 90; | ||
380 | } | ||
381 | "#####, | ||
382 | ) | ||
383 | } | ||
384 | |||
385 | #[test] | ||
386 | fn doctest_flip_comma() { | ||
387 | check_doc_test( | ||
388 | "flip_comma", | ||
389 | r#####" | ||
390 | fn main() { | ||
391 | ((1, 2),$0 (3, 4)); | ||
392 | } | ||
393 | "#####, | ||
394 | r#####" | ||
395 | fn main() { | ||
396 | ((3, 4), (1, 2)); | ||
397 | } | ||
398 | "#####, | ||
399 | ) | ||
400 | } | ||
401 | |||
402 | #[test] | ||
403 | fn doctest_flip_trait_bound() { | ||
404 | check_doc_test( | ||
405 | "flip_trait_bound", | ||
406 | r#####" | ||
407 | fn foo<T: Clone +$0 Copy>() { } | ||
408 | "#####, | ||
409 | r#####" | ||
410 | fn foo<T: Copy + Clone>() { } | ||
411 | "#####, | ||
412 | ) | ||
413 | } | ||
414 | |||
415 | #[test] | ||
416 | fn doctest_generate_default_from_enum_variant() { | ||
417 | check_doc_test( | ||
418 | "generate_default_from_enum_variant", | ||
419 | r#####" | ||
420 | enum Version { | ||
421 | Undefined, | ||
422 | Minor$0, | ||
423 | Major, | ||
424 | } | ||
425 | "#####, | ||
426 | r#####" | ||
427 | enum Version { | ||
428 | Undefined, | ||
429 | Minor, | ||
430 | Major, | ||
431 | } | ||
432 | |||
433 | impl Default for Version { | ||
434 | fn default() -> Self { | ||
435 | Self::Minor | ||
436 | } | ||
437 | } | ||
438 | "#####, | ||
439 | ) | ||
440 | } | ||
441 | |||
442 | #[test] | ||
443 | fn doctest_generate_derive() { | ||
444 | check_doc_test( | ||
445 | "generate_derive", | ||
446 | r#####" | ||
447 | struct Point { | ||
448 | x: u32, | ||
449 | y: u32,$0 | ||
450 | } | ||
451 | "#####, | ||
452 | r#####" | ||
453 | #[derive($0)] | ||
454 | struct Point { | ||
455 | x: u32, | ||
456 | y: u32, | ||
457 | } | ||
458 | "#####, | ||
459 | ) | ||
460 | } | ||
461 | |||
462 | #[test] | ||
463 | fn doctest_generate_enum_as_method() { | ||
464 | check_doc_test( | ||
465 | "generate_enum_as_method", | ||
466 | r#####" | ||
467 | enum Value { | ||
468 | Number(i32), | ||
469 | Text(String)$0, | ||
470 | } | ||
471 | "#####, | ||
472 | r#####" | ||
473 | enum Value { | ||
474 | Number(i32), | ||
475 | Text(String), | ||
476 | } | ||
477 | |||
478 | impl Value { | ||
479 | fn as_text(&self) -> Option<&String> { | ||
480 | if let Self::Text(v) = self { | ||
481 | Some(v) | ||
482 | } else { | ||
483 | None | ||
484 | } | ||
485 | } | ||
486 | } | ||
487 | "#####, | ||
488 | ) | ||
489 | } | ||
490 | |||
491 | #[test] | ||
492 | fn doctest_generate_enum_is_method() { | ||
493 | check_doc_test( | ||
494 | "generate_enum_is_method", | ||
495 | r#####" | ||
496 | enum Version { | ||
497 | Undefined, | ||
498 | Minor$0, | ||
499 | Major, | ||
500 | } | ||
501 | "#####, | ||
502 | r#####" | ||
503 | enum Version { | ||
504 | Undefined, | ||
505 | Minor, | ||
506 | Major, | ||
507 | } | ||
508 | |||
509 | impl Version { | ||
510 | /// Returns `true` if the version is [`Minor`]. | ||
511 | fn is_minor(&self) -> bool { | ||
512 | matches!(self, Self::Minor) | ||
513 | } | ||
514 | } | ||
515 | "#####, | ||
516 | ) | ||
517 | } | ||
518 | |||
519 | #[test] | ||
520 | fn doctest_generate_enum_try_into_method() { | ||
521 | check_doc_test( | ||
522 | "generate_enum_try_into_method", | ||
523 | r#####" | ||
524 | enum Value { | ||
525 | Number(i32), | ||
526 | Text(String)$0, | ||
527 | } | ||
528 | "#####, | ||
529 | r#####" | ||
530 | enum Value { | ||
531 | Number(i32), | ||
532 | Text(String), | ||
533 | } | ||
534 | |||
535 | impl Value { | ||
536 | fn try_into_text(self) -> Result<String, Self> { | ||
537 | if let Self::Text(v) = self { | ||
538 | Ok(v) | ||
539 | } else { | ||
540 | Err(self) | ||
541 | } | ||
542 | } | ||
543 | } | ||
544 | "#####, | ||
545 | ) | ||
546 | } | ||
547 | |||
548 | #[test] | ||
549 | fn doctest_generate_from_impl_for_enum() { | ||
550 | check_doc_test( | ||
551 | "generate_from_impl_for_enum", | ||
552 | r#####" | ||
553 | enum A { $0One(u32) } | ||
554 | "#####, | ||
555 | r#####" | ||
556 | enum A { One(u32) } | ||
557 | |||
558 | impl From<u32> for A { | ||
559 | fn from(v: u32) -> Self { | ||
560 | Self::One(v) | ||
561 | } | ||
562 | } | ||
563 | "#####, | ||
564 | ) | ||
565 | } | ||
566 | |||
567 | #[test] | ||
568 | fn doctest_generate_function() { | ||
569 | check_doc_test( | ||
570 | "generate_function", | ||
571 | r#####" | ||
572 | struct Baz; | ||
573 | fn baz() -> Baz { Baz } | ||
574 | fn foo() { | ||
575 | bar$0("", baz()); | ||
576 | } | ||
577 | |||
578 | "#####, | ||
579 | r#####" | ||
580 | struct Baz; | ||
581 | fn baz() -> Baz { Baz } | ||
582 | fn foo() { | ||
583 | bar("", baz()); | ||
584 | } | ||
585 | |||
586 | fn bar(arg: &str, baz: Baz) ${0:-> ()} { | ||
587 | todo!() | ||
588 | } | ||
589 | |||
590 | "#####, | ||
591 | ) | ||
592 | } | ||
593 | |||
594 | #[test] | ||
595 | fn doctest_generate_getter() { | ||
596 | check_doc_test( | ||
597 | "generate_getter", | ||
598 | r#####" | ||
599 | struct Person { | ||
600 | nam$0e: String, | ||
601 | } | ||
602 | "#####, | ||
603 | r#####" | ||
604 | struct Person { | ||
605 | name: String, | ||
606 | } | ||
607 | |||
608 | impl Person { | ||
609 | /// Get a reference to the person's name. | ||
610 | fn name(&self) -> &String { | ||
611 | &self.name | ||
612 | } | ||
613 | } | ||
614 | "#####, | ||
615 | ) | ||
616 | } | ||
617 | |||
618 | #[test] | ||
619 | fn doctest_generate_getter_mut() { | ||
620 | check_doc_test( | ||
621 | "generate_getter_mut", | ||
622 | r#####" | ||
623 | struct Person { | ||
624 | nam$0e: String, | ||
625 | } | ||
626 | "#####, | ||
627 | r#####" | ||
628 | struct Person { | ||
629 | name: String, | ||
630 | } | ||
631 | |||
632 | impl Person { | ||
633 | /// Get a mutable reference to the person's name. | ||
634 | fn name_mut(&mut self) -> &mut String { | ||
635 | &mut self.name | ||
636 | } | ||
637 | } | ||
638 | "#####, | ||
639 | ) | ||
640 | } | ||
641 | |||
642 | #[test] | ||
643 | fn doctest_generate_impl() { | ||
644 | check_doc_test( | ||
645 | "generate_impl", | ||
646 | r#####" | ||
647 | struct Ctx<T: Clone> { | ||
648 | data: T,$0 | ||
649 | } | ||
650 | "#####, | ||
651 | r#####" | ||
652 | struct Ctx<T: Clone> { | ||
653 | data: T, | ||
654 | } | ||
655 | |||
656 | impl<T: Clone> Ctx<T> { | ||
657 | $0 | ||
658 | } | ||
659 | "#####, | ||
660 | ) | ||
661 | } | ||
662 | |||
663 | #[test] | ||
664 | fn doctest_generate_new() { | ||
665 | check_doc_test( | ||
666 | "generate_new", | ||
667 | r#####" | ||
668 | struct Ctx<T: Clone> { | ||
669 | data: T,$0 | ||
670 | } | ||
671 | "#####, | ||
672 | r#####" | ||
673 | struct Ctx<T: Clone> { | ||
674 | data: T, | ||
675 | } | ||
676 | |||
677 | impl<T: Clone> Ctx<T> { | ||
678 | fn $0new(data: T) -> Self { Self { data } } | ||
679 | } | ||
680 | "#####, | ||
681 | ) | ||
682 | } | ||
683 | |||
684 | #[test] | ||
685 | fn doctest_generate_setter() { | ||
686 | check_doc_test( | ||
687 | "generate_setter", | ||
688 | r#####" | ||
689 | struct Person { | ||
690 | nam$0e: String, | ||
691 | } | ||
692 | "#####, | ||
693 | r#####" | ||
694 | struct Person { | ||
695 | name: String, | ||
696 | } | ||
697 | |||
698 | impl Person { | ||
699 | /// Set the person's name. | ||
700 | fn set_name(&mut self, name: String) { | ||
701 | self.name = name; | ||
702 | } | ||
703 | } | ||
704 | "#####, | ||
705 | ) | ||
706 | } | ||
707 | |||
708 | #[test] | ||
709 | fn doctest_infer_function_return_type() { | ||
710 | check_doc_test( | ||
711 | "infer_function_return_type", | ||
712 | r#####" | ||
713 | fn foo() { 4$02i32 } | ||
714 | "#####, | ||
715 | r#####" | ||
716 | fn foo() -> i32 { 42i32 } | ||
717 | "#####, | ||
718 | ) | ||
719 | } | ||
720 | |||
721 | #[test] | ||
722 | fn doctest_inline_function() { | ||
723 | check_doc_test( | ||
724 | "inline_function", | ||
725 | r#####" | ||
726 | fn add(a: u32, b: u32) -> u32 { a + b } | ||
727 | fn main() { | ||
728 | let x = add$0(1, 2); | ||
729 | } | ||
730 | "#####, | ||
731 | r#####" | ||
732 | fn add(a: u32, b: u32) -> u32 { a + b } | ||
733 | fn main() { | ||
734 | let x = { | ||
735 | let a = 1; | ||
736 | let b = 2; | ||
737 | a + b | ||
738 | }; | ||
739 | } | ||
740 | "#####, | ||
741 | ) | ||
742 | } | ||
743 | |||
744 | #[test] | ||
745 | fn doctest_inline_local_variable() { | ||
746 | check_doc_test( | ||
747 | "inline_local_variable", | ||
748 | r#####" | ||
749 | fn main() { | ||
750 | let x$0 = 1 + 2; | ||
751 | x * 4; | ||
752 | } | ||
753 | "#####, | ||
754 | r#####" | ||
755 | fn main() { | ||
756 | (1 + 2) * 4; | ||
757 | } | ||
758 | "#####, | ||
759 | ) | ||
760 | } | ||
761 | |||
762 | #[test] | ||
763 | fn doctest_introduce_named_lifetime() { | ||
764 | check_doc_test( | ||
765 | "introduce_named_lifetime", | ||
766 | r#####" | ||
767 | impl Cursor<'_$0> { | ||
768 | fn node(self) -> &SyntaxNode { | ||
769 | match self { | ||
770 | Cursor::Replace(node) | Cursor::Before(node) => node, | ||
771 | } | ||
772 | } | ||
773 | } | ||
774 | "#####, | ||
775 | r#####" | ||
776 | impl<'a> Cursor<'a> { | ||
777 | fn node(self) -> &SyntaxNode { | ||
778 | match self { | ||
779 | Cursor::Replace(node) | Cursor::Before(node) => node, | ||
780 | } | ||
781 | } | ||
782 | } | ||
783 | "#####, | ||
784 | ) | ||
785 | } | ||
786 | |||
787 | #[test] | ||
788 | fn doctest_invert_if() { | ||
789 | check_doc_test( | ||
790 | "invert_if", | ||
791 | r#####" | ||
792 | fn main() { | ||
793 | if$0 !y { A } else { B } | ||
794 | } | ||
795 | "#####, | ||
796 | r#####" | ||
797 | fn main() { | ||
798 | if y { B } else { A } | ||
799 | } | ||
800 | "#####, | ||
801 | ) | ||
802 | } | ||
803 | |||
804 | #[test] | ||
805 | fn doctest_make_raw_string() { | ||
806 | check_doc_test( | ||
807 | "make_raw_string", | ||
808 | r#####" | ||
809 | fn main() { | ||
810 | "Hello,$0 World!"; | ||
811 | } | ||
812 | "#####, | ||
813 | r#####" | ||
814 | fn main() { | ||
815 | r#"Hello, World!"#; | ||
816 | } | ||
817 | "#####, | ||
818 | ) | ||
819 | } | ||
820 | |||
821 | #[test] | ||
822 | fn doctest_make_usual_string() { | ||
823 | check_doc_test( | ||
824 | "make_usual_string", | ||
825 | r#####" | ||
826 | fn main() { | ||
827 | r#"Hello,$0 "World!""#; | ||
828 | } | ||
829 | "#####, | ||
830 | r#####" | ||
831 | fn main() { | ||
832 | "Hello, \"World!\""; | ||
833 | } | ||
834 | "#####, | ||
835 | ) | ||
836 | } | ||
837 | |||
838 | #[test] | ||
839 | fn doctest_merge_imports() { | ||
840 | check_doc_test( | ||
841 | "merge_imports", | ||
842 | r#####" | ||
843 | use std::$0fmt::Formatter; | ||
844 | use std::io; | ||
845 | "#####, | ||
846 | r#####" | ||
847 | use std::{fmt::Formatter, io}; | ||
848 | "#####, | ||
849 | ) | ||
850 | } | ||
851 | |||
852 | #[test] | ||
853 | fn doctest_merge_match_arms() { | ||
854 | check_doc_test( | ||
855 | "merge_match_arms", | ||
856 | r#####" | ||
857 | enum Action { Move { distance: u32 }, Stop } | ||
858 | |||
859 | fn handle(action: Action) { | ||
860 | match action { | ||
861 | $0Action::Move(..) => foo(), | ||
862 | Action::Stop => foo(), | ||
863 | } | ||
864 | } | ||
865 | "#####, | ||
866 | r#####" | ||
867 | enum Action { Move { distance: u32 }, Stop } | ||
868 | |||
869 | fn handle(action: Action) { | ||
870 | match action { | ||
871 | Action::Move(..) | Action::Stop => foo(), | ||
872 | } | ||
873 | } | ||
874 | "#####, | ||
875 | ) | ||
876 | } | ||
877 | |||
878 | #[test] | ||
879 | fn doctest_move_arm_cond_to_match_guard() { | ||
880 | check_doc_test( | ||
881 | "move_arm_cond_to_match_guard", | ||
882 | r#####" | ||
883 | enum Action { Move { distance: u32 }, Stop } | ||
884 | |||
885 | fn handle(action: Action) { | ||
886 | match action { | ||
887 | Action::Move { distance } => $0if distance > 10 { foo() }, | ||
888 | _ => (), | ||
889 | } | ||
890 | } | ||
891 | "#####, | ||
892 | r#####" | ||
893 | enum Action { Move { distance: u32 }, Stop } | ||
894 | |||
895 | fn handle(action: Action) { | ||
896 | match action { | ||
897 | Action::Move { distance } if distance > 10 => foo(), | ||
898 | _ => (), | ||
899 | } | ||
900 | } | ||
901 | "#####, | ||
902 | ) | ||
903 | } | ||
904 | |||
905 | #[test] | ||
906 | fn doctest_move_bounds_to_where_clause() { | ||
907 | check_doc_test( | ||
908 | "move_bounds_to_where_clause", | ||
909 | r#####" | ||
910 | fn apply<T, U, $0F: FnOnce(T) -> U>(f: F, x: T) -> U { | ||
911 | f(x) | ||
912 | } | ||
913 | "#####, | ||
914 | r#####" | ||
915 | fn apply<T, U, F>(f: F, x: T) -> U where F: FnOnce(T) -> U { | ||
916 | f(x) | ||
917 | } | ||
918 | "#####, | ||
919 | ) | ||
920 | } | ||
921 | |||
922 | #[test] | ||
923 | fn doctest_move_guard_to_arm_body() { | ||
924 | check_doc_test( | ||
925 | "move_guard_to_arm_body", | ||
926 | r#####" | ||
927 | enum Action { Move { distance: u32 }, Stop } | ||
928 | |||
929 | fn handle(action: Action) { | ||
930 | match action { | ||
931 | Action::Move { distance } $0if distance > 10 => foo(), | ||
932 | _ => (), | ||
933 | } | ||
934 | } | ||
935 | "#####, | ||
936 | r#####" | ||
937 | enum Action { Move { distance: u32 }, Stop } | ||
938 | |||
939 | fn handle(action: Action) { | ||
940 | match action { | ||
941 | Action::Move { distance } => if distance > 10 { | ||
942 | foo() | ||
943 | }, | ||
944 | _ => (), | ||
945 | } | ||
946 | } | ||
947 | "#####, | ||
948 | ) | ||
949 | } | ||
950 | |||
951 | #[test] | ||
952 | fn doctest_move_module_to_file() { | ||
953 | check_doc_test( | ||
954 | "move_module_to_file", | ||
955 | r#####" | ||
956 | mod $0foo { | ||
957 | fn t() {} | ||
958 | } | ||
959 | "#####, | ||
960 | r#####" | ||
961 | mod foo; | ||
962 | "#####, | ||
963 | ) | ||
964 | } | ||
965 | |||
966 | #[test] | ||
967 | fn doctest_pull_assignment_up() { | ||
968 | check_doc_test( | ||
969 | "pull_assignment_up", | ||
970 | r#####" | ||
971 | fn main() { | ||
972 | let mut foo = 6; | ||
973 | |||
974 | if true { | ||
975 | $0foo = 5; | ||
976 | } else { | ||
977 | foo = 4; | ||
978 | } | ||
979 | } | ||
980 | "#####, | ||
981 | r#####" | ||
982 | fn main() { | ||
983 | let mut foo = 6; | ||
984 | |||
985 | foo = if true { | ||
986 | 5 | ||
987 | } else { | ||
988 | 4 | ||
989 | }; | ||
990 | } | ||
991 | "#####, | ||
992 | ) | ||
993 | } | ||
994 | |||
995 | #[test] | ||
996 | fn doctest_qualify_path() { | ||
997 | check_doc_test( | ||
998 | "qualify_path", | ||
999 | r#####" | ||
1000 | fn main() { | ||
1001 | let map = HashMap$0::new(); | ||
1002 | } | ||
1003 | pub mod std { pub mod collections { pub struct HashMap { } } } | ||
1004 | "#####, | ||
1005 | r#####" | ||
1006 | fn main() { | ||
1007 | let map = std::collections::HashMap::new(); | ||
1008 | } | ||
1009 | pub mod std { pub mod collections { pub struct HashMap { } } } | ||
1010 | "#####, | ||
1011 | ) | ||
1012 | } | ||
1013 | |||
1014 | #[test] | ||
1015 | fn doctest_remove_dbg() { | ||
1016 | check_doc_test( | ||
1017 | "remove_dbg", | ||
1018 | r#####" | ||
1019 | fn main() { | ||
1020 | $0dbg!(92); | ||
1021 | } | ||
1022 | "#####, | ||
1023 | r#####" | ||
1024 | fn main() { | ||
1025 | 92; | ||
1026 | } | ||
1027 | "#####, | ||
1028 | ) | ||
1029 | } | ||
1030 | |||
1031 | #[test] | ||
1032 | fn doctest_remove_hash() { | ||
1033 | check_doc_test( | ||
1034 | "remove_hash", | ||
1035 | r#####" | ||
1036 | fn main() { | ||
1037 | r#"Hello,$0 World!"#; | ||
1038 | } | ||
1039 | "#####, | ||
1040 | r#####" | ||
1041 | fn main() { | ||
1042 | r"Hello, World!"; | ||
1043 | } | ||
1044 | "#####, | ||
1045 | ) | ||
1046 | } | ||
1047 | |||
1048 | #[test] | ||
1049 | fn doctest_remove_mut() { | ||
1050 | check_doc_test( | ||
1051 | "remove_mut", | ||
1052 | r#####" | ||
1053 | impl Walrus { | ||
1054 | fn feed(&mut$0 self, amount: u32) {} | ||
1055 | } | ||
1056 | "#####, | ||
1057 | r#####" | ||
1058 | impl Walrus { | ||
1059 | fn feed(&self, amount: u32) {} | ||
1060 | } | ||
1061 | "#####, | ||
1062 | ) | ||
1063 | } | ||
1064 | |||
1065 | #[test] | ||
1066 | fn doctest_remove_unused_param() { | ||
1067 | check_doc_test( | ||
1068 | "remove_unused_param", | ||
1069 | r#####" | ||
1070 | fn frobnicate(x: i32$0) {} | ||
1071 | |||
1072 | fn main() { | ||
1073 | frobnicate(92); | ||
1074 | } | ||
1075 | "#####, | ||
1076 | r#####" | ||
1077 | fn frobnicate() {} | ||
1078 | |||
1079 | fn main() { | ||
1080 | frobnicate(); | ||
1081 | } | ||
1082 | "#####, | ||
1083 | ) | ||
1084 | } | ||
1085 | |||
1086 | #[test] | ||
1087 | fn doctest_reorder_fields() { | ||
1088 | check_doc_test( | ||
1089 | "reorder_fields", | ||
1090 | r#####" | ||
1091 | struct Foo {foo: i32, bar: i32}; | ||
1092 | const test: Foo = $0Foo {bar: 0, foo: 1} | ||
1093 | "#####, | ||
1094 | r#####" | ||
1095 | struct Foo {foo: i32, bar: i32}; | ||
1096 | const test: Foo = Foo {foo: 1, bar: 0} | ||
1097 | "#####, | ||
1098 | ) | ||
1099 | } | ||
1100 | |||
1101 | #[test] | ||
1102 | fn doctest_reorder_impl() { | ||
1103 | check_doc_test( | ||
1104 | "reorder_impl", | ||
1105 | r#####" | ||
1106 | trait Foo { | ||
1107 | fn a() {} | ||
1108 | fn b() {} | ||
1109 | fn c() {} | ||
1110 | } | ||
1111 | |||
1112 | struct Bar; | ||
1113 | $0impl Foo for Bar { | ||
1114 | fn b() {} | ||
1115 | fn c() {} | ||
1116 | fn a() {} | ||
1117 | } | ||
1118 | "#####, | ||
1119 | r#####" | ||
1120 | trait Foo { | ||
1121 | fn a() {} | ||
1122 | fn b() {} | ||
1123 | fn c() {} | ||
1124 | } | ||
1125 | |||
1126 | struct Bar; | ||
1127 | impl Foo for Bar { | ||
1128 | fn a() {} | ||
1129 | fn b() {} | ||
1130 | fn c() {} | ||
1131 | } | ||
1132 | "#####, | ||
1133 | ) | ||
1134 | } | ||
1135 | |||
1136 | #[test] | ||
1137 | fn doctest_replace_derive_with_manual_impl() { | ||
1138 | check_doc_test( | ||
1139 | "replace_derive_with_manual_impl", | ||
1140 | r#####" | ||
1141 | trait Debug { fn fmt(&self, f: &mut Formatter) -> Result<()>; } | ||
1142 | #[derive(Deb$0ug, Display)] | ||
1143 | struct S; | ||
1144 | "#####, | ||
1145 | r#####" | ||
1146 | trait Debug { fn fmt(&self, f: &mut Formatter) -> Result<()>; } | ||
1147 | #[derive(Display)] | ||
1148 | struct S; | ||
1149 | |||
1150 | impl Debug for S { | ||
1151 | fn fmt(&self, f: &mut Formatter) -> Result<()> { | ||
1152 | ${0:todo!()} | ||
1153 | } | ||
1154 | } | ||
1155 | "#####, | ||
1156 | ) | ||
1157 | } | ||
1158 | |||
1159 | #[test] | ||
1160 | fn doctest_replace_for_loop_with_for_each() { | ||
1161 | check_doc_test( | ||
1162 | "replace_for_loop_with_for_each", | ||
1163 | r#####" | ||
1164 | fn main() { | ||
1165 | let x = vec![1, 2, 3]; | ||
1166 | for$0 v in x { | ||
1167 | let y = v * 2; | ||
1168 | } | ||
1169 | } | ||
1170 | "#####, | ||
1171 | r#####" | ||
1172 | fn main() { | ||
1173 | let x = vec![1, 2, 3]; | ||
1174 | x.into_iter().for_each(|v| { | ||
1175 | let y = v * 2; | ||
1176 | }); | ||
1177 | } | ||
1178 | "#####, | ||
1179 | ) | ||
1180 | } | ||
1181 | |||
1182 | #[test] | ||
1183 | fn doctest_replace_if_let_with_match() { | ||
1184 | check_doc_test( | ||
1185 | "replace_if_let_with_match", | ||
1186 | r#####" | ||
1187 | enum Action { Move { distance: u32 }, Stop } | ||
1188 | |||
1189 | fn handle(action: Action) { | ||
1190 | $0if let Action::Move { distance } = action { | ||
1191 | foo(distance) | ||
1192 | } else { | ||
1193 | bar() | ||
1194 | } | ||
1195 | } | ||
1196 | "#####, | ||
1197 | r#####" | ||
1198 | enum Action { Move { distance: u32 }, Stop } | ||
1199 | |||
1200 | fn handle(action: Action) { | ||
1201 | match action { | ||
1202 | Action::Move { distance } => foo(distance), | ||
1203 | _ => bar(), | ||
1204 | } | ||
1205 | } | ||
1206 | "#####, | ||
1207 | ) | ||
1208 | } | ||
1209 | |||
1210 | #[test] | ||
1211 | fn doctest_replace_impl_trait_with_generic() { | ||
1212 | check_doc_test( | ||
1213 | "replace_impl_trait_with_generic", | ||
1214 | r#####" | ||
1215 | fn foo(bar: $0impl Bar) {} | ||
1216 | "#####, | ||
1217 | r#####" | ||
1218 | fn foo<B: Bar>(bar: B) {} | ||
1219 | "#####, | ||
1220 | ) | ||
1221 | } | ||
1222 | |||
1223 | #[test] | ||
1224 | fn doctest_replace_let_with_if_let() { | ||
1225 | check_doc_test( | ||
1226 | "replace_let_with_if_let", | ||
1227 | r#####" | ||
1228 | enum Option<T> { Some(T), None } | ||
1229 | |||
1230 | fn main(action: Action) { | ||
1231 | $0let x = compute(); | ||
1232 | } | ||
1233 | |||
1234 | fn compute() -> Option<i32> { None } | ||
1235 | "#####, | ||
1236 | r#####" | ||
1237 | enum Option<T> { Some(T), None } | ||
1238 | |||
1239 | fn main(action: Action) { | ||
1240 | if let Some(x) = compute() { | ||
1241 | } | ||
1242 | } | ||
1243 | |||
1244 | fn compute() -> Option<i32> { None } | ||
1245 | "#####, | ||
1246 | ) | ||
1247 | } | ||
1248 | |||
1249 | #[test] | ||
1250 | fn doctest_replace_match_with_if_let() { | ||
1251 | check_doc_test( | ||
1252 | "replace_match_with_if_let", | ||
1253 | r#####" | ||
1254 | enum Action { Move { distance: u32 }, Stop } | ||
1255 | |||
1256 | fn handle(action: Action) { | ||
1257 | $0match action { | ||
1258 | Action::Move { distance } => foo(distance), | ||
1259 | _ => bar(), | ||
1260 | } | ||
1261 | } | ||
1262 | "#####, | ||
1263 | r#####" | ||
1264 | enum Action { Move { distance: u32 }, Stop } | ||
1265 | |||
1266 | fn handle(action: Action) { | ||
1267 | if let Action::Move { distance } = action { | ||
1268 | foo(distance) | ||
1269 | } else { | ||
1270 | bar() | ||
1271 | } | ||
1272 | } | ||
1273 | "#####, | ||
1274 | ) | ||
1275 | } | ||
1276 | |||
1277 | #[test] | ||
1278 | fn doctest_replace_qualified_name_with_use() { | ||
1279 | check_doc_test( | ||
1280 | "replace_qualified_name_with_use", | ||
1281 | r#####" | ||
1282 | fn process(map: std::collections::$0HashMap<String, String>) {} | ||
1283 | "#####, | ||
1284 | r#####" | ||
1285 | use std::collections::HashMap; | ||
1286 | |||
1287 | fn process(map: HashMap<String, String>) {} | ||
1288 | "#####, | ||
1289 | ) | ||
1290 | } | ||
1291 | |||
1292 | #[test] | ||
1293 | fn doctest_replace_string_with_char() { | ||
1294 | check_doc_test( | ||
1295 | "replace_string_with_char", | ||
1296 | r#####" | ||
1297 | fn main() { | ||
1298 | find("{$0"); | ||
1299 | } | ||
1300 | "#####, | ||
1301 | r#####" | ||
1302 | fn main() { | ||
1303 | find('{'); | ||
1304 | } | ||
1305 | "#####, | ||
1306 | ) | ||
1307 | } | ||
1308 | |||
1309 | #[test] | ||
1310 | fn doctest_replace_unwrap_with_match() { | ||
1311 | check_doc_test( | ||
1312 | "replace_unwrap_with_match", | ||
1313 | r#####" | ||
1314 | enum Result<T, E> { Ok(T), Err(E) } | ||
1315 | fn main() { | ||
1316 | let x: Result<i32, i32> = Result::Ok(92); | ||
1317 | let y = x.$0unwrap(); | ||
1318 | } | ||
1319 | "#####, | ||
1320 | r#####" | ||
1321 | enum Result<T, E> { Ok(T), Err(E) } | ||
1322 | fn main() { | ||
1323 | let x: Result<i32, i32> = Result::Ok(92); | ||
1324 | let y = match x { | ||
1325 | Ok(a) => a, | ||
1326 | $0_ => unreachable!(), | ||
1327 | }; | ||
1328 | } | ||
1329 | "#####, | ||
1330 | ) | ||
1331 | } | ||
1332 | |||
1333 | #[test] | ||
1334 | fn doctest_split_import() { | ||
1335 | check_doc_test( | ||
1336 | "split_import", | ||
1337 | r#####" | ||
1338 | use std::$0collections::HashMap; | ||
1339 | "#####, | ||
1340 | r#####" | ||
1341 | use std::{collections::HashMap}; | ||
1342 | "#####, | ||
1343 | ) | ||
1344 | } | ||
1345 | |||
1346 | #[test] | ||
1347 | fn doctest_toggle_ignore() { | ||
1348 | check_doc_test( | ||
1349 | "toggle_ignore", | ||
1350 | r#####" | ||
1351 | $0#[test] | ||
1352 | fn arithmetics { | ||
1353 | assert_eq!(2 + 2, 5); | ||
1354 | } | ||
1355 | "#####, | ||
1356 | r#####" | ||
1357 | #[test] | ||
1358 | #[ignore] | ||
1359 | fn arithmetics { | ||
1360 | assert_eq!(2 + 2, 5); | ||
1361 | } | ||
1362 | "#####, | ||
1363 | ) | ||
1364 | } | ||
1365 | |||
1366 | #[test] | ||
1367 | fn doctest_unmerge_use() { | ||
1368 | check_doc_test( | ||
1369 | "unmerge_use", | ||
1370 | r#####" | ||
1371 | use std::fmt::{Debug, Display$0}; | ||
1372 | "#####, | ||
1373 | r#####" | ||
1374 | use std::fmt::{Debug}; | ||
1375 | use std::fmt::Display; | ||
1376 | "#####, | ||
1377 | ) | ||
1378 | } | ||
1379 | |||
1380 | #[test] | ||
1381 | fn doctest_unwrap_block() { | ||
1382 | check_doc_test( | ||
1383 | "unwrap_block", | ||
1384 | r#####" | ||
1385 | fn foo() { | ||
1386 | if true {$0 | ||
1387 | println!("foo"); | ||
1388 | } | ||
1389 | } | ||
1390 | "#####, | ||
1391 | r#####" | ||
1392 | fn foo() { | ||
1393 | println!("foo"); | ||
1394 | } | ||
1395 | "#####, | ||
1396 | ) | ||
1397 | } | ||
1398 | |||
1399 | #[test] | ||
1400 | fn doctest_wrap_return_type_in_result() { | ||
1401 | check_doc_test( | ||
1402 | "wrap_return_type_in_result", | ||
1403 | r#####" | ||
1404 | fn foo() -> i32$0 { 42i32 } | ||
1405 | "#####, | ||
1406 | r#####" | ||
1407 | fn foo() -> Result<i32, ${0:_}> { Ok(42i32) } | ||
1408 | "#####, | ||
1409 | ) | ||
1410 | } | ||