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