]> git.lizzy.rs Git - rust.git/blob - crates/ra_assists/src/tests/generated.rs
Better cursor placement when adding impl members
[rust.git] / crates / ra_assists / src / tests / generated.rs
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_custom_impl() {
7     check_doc_test(
8         "add_custom_impl",
9         r#####"
10 #[derive(Deb<|>ug, Display)]
11 struct S;
12 "#####,
13         r#####"
14 #[derive(Display)]
15 struct S;
16
17 impl Debug for S {
18     $0
19 }
20 "#####,
21     )
22 }
23
24 #[test]
25 fn doctest_add_derive() {
26     check_doc_test(
27         "add_derive",
28         r#####"
29 struct Point {
30     x: u32,
31     y: u32,<|>
32 }
33 "#####,
34         r#####"
35 #[derive($0)]
36 struct Point {
37     x: u32,
38     y: u32,
39 }
40 "#####,
41     )
42 }
43
44 #[test]
45 fn doctest_add_explicit_type() {
46     check_doc_test(
47         "add_explicit_type",
48         r#####"
49 fn main() {
50     let x<|> = 92;
51 }
52 "#####,
53         r#####"
54 fn main() {
55     let x: i32 = 92;
56 }
57 "#####,
58     )
59 }
60
61 #[test]
62 fn doctest_add_function() {
63     check_doc_test(
64         "add_function",
65         r#####"
66 struct Baz;
67 fn baz() -> Baz { Baz }
68 fn foo() {
69     bar<|>("", baz());
70 }
71
72 "#####,
73         r#####"
74 struct Baz;
75 fn baz() -> Baz { Baz }
76 fn foo() {
77     bar("", baz());
78 }
79
80 fn bar(arg: &str, baz: Baz) {
81     ${0:todo!()}
82 }
83
84 "#####,
85     )
86 }
87
88 #[test]
89 fn doctest_add_hash() {
90     check_doc_test(
91         "add_hash",
92         r#####"
93 fn main() {
94     r#"Hello,<|> World!"#;
95 }
96 "#####,
97         r#####"
98 fn main() {
99     r##"Hello, World!"##;
100 }
101 "#####,
102     )
103 }
104
105 #[test]
106 fn doctest_add_impl() {
107     check_doc_test(
108         "add_impl",
109         r#####"
110 struct Ctx<T: Clone> {
111     data: T,<|>
112 }
113 "#####,
114         r#####"
115 struct Ctx<T: Clone> {
116     data: T,
117 }
118
119 impl<T: Clone> Ctx<T> {
120     $0
121 }
122 "#####,
123     )
124 }
125
126 #[test]
127 fn doctest_add_impl_default_members() {
128     check_doc_test(
129         "add_impl_default_members",
130         r#####"
131 trait Trait {
132     Type X;
133     fn foo(&self);
134     fn bar(&self) {}
135 }
136
137 impl Trait for () {
138     Type X = ();
139     fn foo(&self) {}<|>
140
141 }
142 "#####,
143         r#####"
144 trait Trait {
145     Type X;
146     fn foo(&self);
147     fn bar(&self) {}
148 }
149
150 impl Trait for () {
151     Type X = ();
152     fn foo(&self) {}
153     $0fn bar(&self) {}
154
155 }
156 "#####,
157     )
158 }
159
160 #[test]
161 fn doctest_add_impl_missing_members() {
162     check_doc_test(
163         "add_impl_missing_members",
164         r#####"
165 trait Trait<T> {
166     Type X;
167     fn foo(&self) -> T;
168     fn bar(&self) {}
169 }
170
171 impl Trait<u32> for () {<|>
172
173 }
174 "#####,
175         r#####"
176 trait Trait<T> {
177     Type X;
178     fn foo(&self) -> T;
179     fn bar(&self) {}
180 }
181
182 impl Trait<u32> for () {
183     fn foo(&self) -> u32 {
184         ${0:todo!()}
185     }
186
187 }
188 "#####,
189     )
190 }
191
192 #[test]
193 fn doctest_add_new() {
194     check_doc_test(
195         "add_new",
196         r#####"
197 struct Ctx<T: Clone> {
198      data: T,<|>
199 }
200 "#####,
201         r#####"
202 struct Ctx<T: Clone> {
203      data: T,
204 }
205
206 impl<T: Clone> Ctx<T> {
207     fn new(data: T) -> Self { Self { data } }
208 }
209
210 "#####,
211     )
212 }
213
214 #[test]
215 fn doctest_add_turbo_fish() {
216     check_doc_test(
217         "add_turbo_fish",
218         r#####"
219 fn make<T>() -> T { todo!() }
220 fn main() {
221     let x = make<|>();
222 }
223 "#####,
224         r#####"
225 fn make<T>() -> T { todo!() }
226 fn main() {
227     let x = make::<${0:_}>();
228 }
229 "#####,
230     )
231 }
232
233 #[test]
234 fn doctest_apply_demorgan() {
235     check_doc_test(
236         "apply_demorgan",
237         r#####"
238 fn main() {
239     if x != 4 ||<|> !y {}
240 }
241 "#####,
242         r#####"
243 fn main() {
244     if !(x == 4 && y) {}
245 }
246 "#####,
247     )
248 }
249
250 #[test]
251 fn doctest_auto_import() {
252     check_doc_test(
253         "auto_import",
254         r#####"
255 fn main() {
256     let map = HashMap<|>::new();
257 }
258 pub mod std { pub mod collections { pub struct HashMap { } } }
259 "#####,
260         r#####"
261 use std::collections::HashMap;
262
263 fn main() {
264     let map = HashMap::new();
265 }
266 pub mod std { pub mod collections { pub struct HashMap { } } }
267 "#####,
268     )
269 }
270
271 #[test]
272 fn doctest_change_return_type_to_result() {
273     check_doc_test(
274         "change_return_type_to_result",
275         r#####"
276 fn foo() -> i32<|> { 42i32 }
277 "#####,
278         r#####"
279 fn foo() -> Result<i32, > { Ok(42i32) }
280 "#####,
281     )
282 }
283
284 #[test]
285 fn doctest_change_visibility() {
286     check_doc_test(
287         "change_visibility",
288         r#####"
289 <|>fn frobnicate() {}
290 "#####,
291         r#####"
292 pub(crate) fn frobnicate() {}
293 "#####,
294     )
295 }
296
297 #[test]
298 fn doctest_convert_to_guarded_return() {
299     check_doc_test(
300         "convert_to_guarded_return",
301         r#####"
302 fn main() {
303     <|>if cond {
304         foo();
305         bar();
306     }
307 }
308 "#####,
309         r#####"
310 fn main() {
311     if !cond {
312         return;
313     }
314     foo();
315     bar();
316 }
317 "#####,
318     )
319 }
320
321 #[test]
322 fn doctest_fill_match_arms() {
323     check_doc_test(
324         "fill_match_arms",
325         r#####"
326 enum Action { Move { distance: u32 }, Stop }
327
328 fn handle(action: Action) {
329     match action {
330         <|>
331     }
332 }
333 "#####,
334         r#####"
335 enum Action { Move { distance: u32 }, Stop }
336
337 fn handle(action: Action) {
338     match action {
339         Action::Move { distance } => {}
340         Action::Stop => {}
341     }
342 }
343 "#####,
344     )
345 }
346
347 #[test]
348 fn doctest_flip_binexpr() {
349     check_doc_test(
350         "flip_binexpr",
351         r#####"
352 fn main() {
353     let _ = 90 +<|> 2;
354 }
355 "#####,
356         r#####"
357 fn main() {
358     let _ = 2 + 90;
359 }
360 "#####,
361     )
362 }
363
364 #[test]
365 fn doctest_flip_comma() {
366     check_doc_test(
367         "flip_comma",
368         r#####"
369 fn main() {
370     ((1, 2),<|> (3, 4));
371 }
372 "#####,
373         r#####"
374 fn main() {
375     ((3, 4), (1, 2));
376 }
377 "#####,
378     )
379 }
380
381 #[test]
382 fn doctest_flip_trait_bound() {
383     check_doc_test(
384         "flip_trait_bound",
385         r#####"
386 fn foo<T: Clone +<|> Copy>() { }
387 "#####,
388         r#####"
389 fn foo<T: Copy + Clone>() { }
390 "#####,
391     )
392 }
393
394 #[test]
395 fn doctest_inline_local_variable() {
396     check_doc_test(
397         "inline_local_variable",
398         r#####"
399 fn main() {
400     let x<|> = 1 + 2;
401     x * 4;
402 }
403 "#####,
404         r#####"
405 fn main() {
406     (1 + 2) * 4;
407 }
408 "#####,
409     )
410 }
411
412 #[test]
413 fn doctest_introduce_variable() {
414     check_doc_test(
415         "introduce_variable",
416         r#####"
417 fn main() {
418     <|>(1 + 2)<|> * 4;
419 }
420 "#####,
421         r#####"
422 fn main() {
423     let var_name = (1 + 2);
424     var_name * 4;
425 }
426 "#####,
427     )
428 }
429
430 #[test]
431 fn doctest_invert_if() {
432     check_doc_test(
433         "invert_if",
434         r#####"
435 fn main() {
436     if<|> !y { A } else { B }
437 }
438 "#####,
439         r#####"
440 fn main() {
441     if y { B } else { A }
442 }
443 "#####,
444     )
445 }
446
447 #[test]
448 fn doctest_make_raw_string() {
449     check_doc_test(
450         "make_raw_string",
451         r#####"
452 fn main() {
453     "Hello,<|> World!";
454 }
455 "#####,
456         r#####"
457 fn main() {
458     r#"Hello, World!"#;
459 }
460 "#####,
461     )
462 }
463
464 #[test]
465 fn doctest_make_usual_string() {
466     check_doc_test(
467         "make_usual_string",
468         r#####"
469 fn main() {
470     r#"Hello,<|> "World!""#;
471 }
472 "#####,
473         r#####"
474 fn main() {
475     "Hello, \"World!\"";
476 }
477 "#####,
478     )
479 }
480
481 #[test]
482 fn doctest_merge_imports() {
483     check_doc_test(
484         "merge_imports",
485         r#####"
486 use std::<|>fmt::Formatter;
487 use std::io;
488 "#####,
489         r#####"
490 use std::{fmt::Formatter, io};
491 "#####,
492     )
493 }
494
495 #[test]
496 fn doctest_merge_match_arms() {
497     check_doc_test(
498         "merge_match_arms",
499         r#####"
500 enum Action { Move { distance: u32 }, Stop }
501
502 fn handle(action: Action) {
503     match action {
504         <|>Action::Move(..) => foo(),
505         Action::Stop => foo(),
506     }
507 }
508 "#####,
509         r#####"
510 enum Action { Move { distance: u32 }, Stop }
511
512 fn handle(action: Action) {
513     match action {
514         Action::Move(..) | Action::Stop => foo(),
515     }
516 }
517 "#####,
518     )
519 }
520
521 #[test]
522 fn doctest_move_arm_cond_to_match_guard() {
523     check_doc_test(
524         "move_arm_cond_to_match_guard",
525         r#####"
526 enum Action { Move { distance: u32 }, Stop }
527
528 fn handle(action: Action) {
529     match action {
530         Action::Move { distance } => <|>if distance > 10 { foo() },
531         _ => (),
532     }
533 }
534 "#####,
535         r#####"
536 enum Action { Move { distance: u32 }, Stop }
537
538 fn handle(action: Action) {
539     match action {
540         Action::Move { distance } if distance > 10 => foo(),
541         _ => (),
542     }
543 }
544 "#####,
545     )
546 }
547
548 #[test]
549 fn doctest_move_bounds_to_where_clause() {
550     check_doc_test(
551         "move_bounds_to_where_clause",
552         r#####"
553 fn apply<T, U, <|>F: FnOnce(T) -> U>(f: F, x: T) -> U {
554     f(x)
555 }
556 "#####,
557         r#####"
558 fn apply<T, U, F>(f: F, x: T) -> U where F: FnOnce(T) -> U {
559     f(x)
560 }
561 "#####,
562     )
563 }
564
565 #[test]
566 fn doctest_move_guard_to_arm_body() {
567     check_doc_test(
568         "move_guard_to_arm_body",
569         r#####"
570 enum Action { Move { distance: u32 }, Stop }
571
572 fn handle(action: Action) {
573     match action {
574         Action::Move { distance } <|>if distance > 10 => foo(),
575         _ => (),
576     }
577 }
578 "#####,
579         r#####"
580 enum Action { Move { distance: u32 }, Stop }
581
582 fn handle(action: Action) {
583     match action {
584         Action::Move { distance } => if distance > 10 { foo() },
585         _ => (),
586     }
587 }
588 "#####,
589     )
590 }
591
592 #[test]
593 fn doctest_remove_dbg() {
594     check_doc_test(
595         "remove_dbg",
596         r#####"
597 fn main() {
598     <|>dbg!(92);
599 }
600 "#####,
601         r#####"
602 fn main() {
603     92;
604 }
605 "#####,
606     )
607 }
608
609 #[test]
610 fn doctest_remove_hash() {
611     check_doc_test(
612         "remove_hash",
613         r#####"
614 fn main() {
615     r#"Hello,<|> World!"#;
616 }
617 "#####,
618         r#####"
619 fn main() {
620     r"Hello, World!";
621 }
622 "#####,
623     )
624 }
625
626 #[test]
627 fn doctest_remove_mut() {
628     check_doc_test(
629         "remove_mut",
630         r#####"
631 impl Walrus {
632     fn feed(&mut<|> self, amount: u32) {}
633 }
634 "#####,
635         r#####"
636 impl Walrus {
637     fn feed(&self, amount: u32) {}
638 }
639 "#####,
640     )
641 }
642
643 #[test]
644 fn doctest_reorder_fields() {
645     check_doc_test(
646         "reorder_fields",
647         r#####"
648 struct Foo {foo: i32, bar: i32};
649 const test: Foo = <|>Foo {bar: 0, foo: 1}
650 "#####,
651         r#####"
652 struct Foo {foo: i32, bar: i32};
653 const test: Foo = Foo {foo: 1, bar: 0}
654 "#####,
655     )
656 }
657
658 #[test]
659 fn doctest_replace_if_let_with_match() {
660     check_doc_test(
661         "replace_if_let_with_match",
662         r#####"
663 enum Action { Move { distance: u32 }, Stop }
664
665 fn handle(action: Action) {
666     <|>if let Action::Move { distance } = action {
667         foo(distance)
668     } else {
669         bar()
670     }
671 }
672 "#####,
673         r#####"
674 enum Action { Move { distance: u32 }, Stop }
675
676 fn handle(action: Action) {
677     match action {
678         Action::Move { distance } => foo(distance),
679         _ => bar(),
680     }
681 }
682 "#####,
683     )
684 }
685
686 #[test]
687 fn doctest_replace_let_with_if_let() {
688     check_doc_test(
689         "replace_let_with_if_let",
690         r#####"
691 enum Option<T> { Some(T), None }
692
693 fn main(action: Action) {
694     <|>let x = compute();
695 }
696
697 fn compute() -> Option<i32> { None }
698 "#####,
699         r#####"
700 enum Option<T> { Some(T), None }
701
702 fn main(action: Action) {
703     if let Some(x) = compute() {
704     }
705 }
706
707 fn compute() -> Option<i32> { None }
708 "#####,
709     )
710 }
711
712 #[test]
713 fn doctest_replace_qualified_name_with_use() {
714     check_doc_test(
715         "replace_qualified_name_with_use",
716         r#####"
717 fn process(map: std::collections::<|>HashMap<String, String>) {}
718 "#####,
719         r#####"
720 use std::collections::HashMap;
721
722 fn process(map: HashMap<String, String>) {}
723 "#####,
724     )
725 }
726
727 #[test]
728 fn doctest_replace_unwrap_with_match() {
729     check_doc_test(
730         "replace_unwrap_with_match",
731         r#####"
732 enum Result<T, E> { Ok(T), Err(E) }
733 fn main() {
734     let x: Result<i32, i32> = Result::Ok(92);
735     let y = x.<|>unwrap();
736 }
737 "#####,
738         r#####"
739 enum Result<T, E> { Ok(T), Err(E) }
740 fn main() {
741     let x: Result<i32, i32> = Result::Ok(92);
742     let y = match x {
743         Ok(a) => a,
744         _ => unreachable!(),
745     };
746 }
747 "#####,
748     )
749 }
750
751 #[test]
752 fn doctest_split_import() {
753     check_doc_test(
754         "split_import",
755         r#####"
756 use std::<|>collections::HashMap;
757 "#####,
758         r#####"
759 use std::{collections::HashMap};
760 "#####,
761     )
762 }
763
764 #[test]
765 fn doctest_unwrap_block() {
766     check_doc_test(
767         "unwrap_block",
768         r#####"
769 fn foo() {
770     if true {<|>
771         println!("foo");
772     }
773 }
774 "#####,
775         r#####"
776 fn foo() {
777     println!("foo");
778 }
779 "#####,
780     )
781 }