diff options
Diffstat (limited to 'crates/ra_ide/src/completion/presentation.rs')
-rw-r--r-- | crates/ra_ide/src/completion/presentation.rs | 193 |
1 files changed, 51 insertions, 142 deletions
diff --git a/crates/ra_ide/src/completion/presentation.rs b/crates/ra_ide/src/completion/presentation.rs index bd274bd74..f472b9529 100644 --- a/crates/ra_ide/src/completion/presentation.rs +++ b/crates/ra_ide/src/completion/presentation.rs | |||
@@ -460,7 +460,7 @@ mod tests { | |||
460 | use test_utils::mark; | 460 | use test_utils::mark; |
461 | 461 | ||
462 | use crate::completion::{ | 462 | use crate::completion::{ |
463 | test_utils::{do_completion, do_completion_with_options}, | 463 | test_utils::{check_edit, do_completion, do_completion_with_options}, |
464 | CompletionConfig, CompletionItem, CompletionKind, | 464 | CompletionConfig, CompletionItem, CompletionKind, |
465 | }; | 465 | }; |
466 | 466 | ||
@@ -636,150 +636,59 @@ fn foo() { | |||
636 | #[test] | 636 | #[test] |
637 | fn inserts_parens_for_function_calls() { | 637 | fn inserts_parens_for_function_calls() { |
638 | mark::check!(inserts_parens_for_function_calls); | 638 | mark::check!(inserts_parens_for_function_calls); |
639 | assert_debug_snapshot!( | 639 | check_edit( |
640 | do_reference_completion( | 640 | "no_args", |
641 | r" | 641 | r#" |
642 | fn no_args() {} | 642 | fn no_args() {} |
643 | fn main() { no_<|> } | 643 | fn main() { no_<|> } |
644 | " | 644 | "#, |
645 | ), | 645 | r#" |
646 | @r###" | 646 | fn no_args() {} |
647 | [ | 647 | fn main() { no_args()$0 } |
648 | CompletionItem { | 648 | "#, |
649 | label: "main()", | ||
650 | source_range: 28..31, | ||
651 | delete: 28..31, | ||
652 | insert: "main()$0", | ||
653 | kind: Function, | ||
654 | lookup: "main", | ||
655 | detail: "fn main()", | ||
656 | }, | ||
657 | CompletionItem { | ||
658 | label: "no_args()", | ||
659 | source_range: 28..31, | ||
660 | delete: 28..31, | ||
661 | insert: "no_args()$0", | ||
662 | kind: Function, | ||
663 | lookup: "no_args", | ||
664 | detail: "fn no_args()", | ||
665 | }, | ||
666 | ] | ||
667 | "### | ||
668 | ); | ||
669 | assert_debug_snapshot!( | ||
670 | do_reference_completion( | ||
671 | r" | ||
672 | fn with_args(x: i32, y: String) {} | ||
673 | fn main() { with_<|> } | ||
674 | " | ||
675 | ), | ||
676 | @r###" | ||
677 | [ | ||
678 | CompletionItem { | ||
679 | label: "main()", | ||
680 | source_range: 47..52, | ||
681 | delete: 47..52, | ||
682 | insert: "main()$0", | ||
683 | kind: Function, | ||
684 | lookup: "main", | ||
685 | detail: "fn main()", | ||
686 | }, | ||
687 | CompletionItem { | ||
688 | label: "with_args(…)", | ||
689 | source_range: 47..52, | ||
690 | delete: 47..52, | ||
691 | insert: "with_args(${1:x}, ${2:y})$0", | ||
692 | kind: Function, | ||
693 | lookup: "with_args", | ||
694 | detail: "fn with_args(x: i32, y: String)", | ||
695 | trigger_call_info: true, | ||
696 | }, | ||
697 | ] | ||
698 | "### | ||
699 | ); | 649 | ); |
700 | assert_debug_snapshot!( | 650 | check_edit( |
701 | do_reference_completion( | 651 | "with_args", |
702 | r" | 652 | r#" |
703 | fn with_ignored_args(_foo: i32, ___bar: bool, ho_ge_: String) {} | 653 | fn with_args(x: i32, y: String) {} |
704 | fn main() { with_<|> } | 654 | fn main() { with_<|> } |
705 | " | 655 | "#, |
706 | ), | 656 | r#" |
707 | @r###" | 657 | fn with_args(x: i32, y: String) {} |
708 | [ | 658 | fn main() { with_args(${1:x}, ${2:y})$0 } |
709 | CompletionItem { | 659 | "#, |
710 | label: "main()", | ||
711 | source_range: 77..82, | ||
712 | delete: 77..82, | ||
713 | insert: "main()$0", | ||
714 | kind: Function, | ||
715 | lookup: "main", | ||
716 | detail: "fn main()", | ||
717 | }, | ||
718 | CompletionItem { | ||
719 | label: "with_ignored_args(…)", | ||
720 | source_range: 77..82, | ||
721 | delete: 77..82, | ||
722 | insert: "with_ignored_args(${1:foo}, ${2:bar}, ${3:ho_ge_})$0", | ||
723 | kind: Function, | ||
724 | lookup: "with_ignored_args", | ||
725 | detail: "fn with_ignored_args(_foo: i32, ___bar: bool, ho_ge_: String)", | ||
726 | trigger_call_info: true, | ||
727 | }, | ||
728 | ] | ||
729 | "### | ||
730 | ); | 660 | ); |
731 | assert_debug_snapshot!( | 661 | check_edit( |
732 | do_reference_completion( | 662 | "foo", |
733 | r" | 663 | r#" |
734 | struct S {} | 664 | struct S; |
735 | impl S { | 665 | impl S { |
736 | fn foo(&self) {} | 666 | fn foo(&self) {} |
737 | } | 667 | } |
738 | fn bar(s: &S) { | 668 | fn bar(s: &S) { s.f<|> } |
739 | s.f<|> | 669 | "#, |
740 | } | 670 | r#" |
741 | " | 671 | struct S; |
742 | ), | 672 | impl S { |
743 | @r###" | 673 | fn foo(&self) {} |
744 | [ | 674 | } |
745 | CompletionItem { | 675 | fn bar(s: &S) { s.foo()$0 } |
746 | label: "foo()", | 676 | "#, |
747 | source_range: 66..67, | ||
748 | delete: 66..67, | ||
749 | insert: "foo()$0", | ||
750 | kind: Method, | ||
751 | lookup: "foo", | ||
752 | detail: "fn foo(&self)", | ||
753 | }, | ||
754 | ] | ||
755 | "### | ||
756 | ); | 677 | ); |
757 | assert_debug_snapshot!( | 678 | } |
758 | do_reference_completion( | 679 | |
759 | r" | 680 | #[test] |
760 | struct S {} | 681 | fn strips_underscores_from_args() { |
761 | impl S { | 682 | check_edit( |
762 | fn foo_ignored_args(&self, _a: bool, b: i32) {} | 683 | "foo", |
763 | } | 684 | r#" |
764 | fn bar(s: &S) { | 685 | fn foo(_foo: i32, ___bar: bool, ho_ge_: String) {} |
765 | s.f<|> | 686 | fn main() { f<|> } |
766 | } | 687 | "#, |
767 | " | 688 | r#" |
768 | ), | 689 | fn foo(_foo: i32, ___bar: bool, ho_ge_: String) {} |
769 | @r###" | 690 | fn main() { foo(${1:foo}, ${2:bar}, ${3:ho_ge_})$0 } |
770 | [ | 691 | "#, |
771 | CompletionItem { | ||
772 | label: "foo_ignored_args(…)", | ||
773 | source_range: 97..98, | ||
774 | delete: 97..98, | ||
775 | insert: "foo_ignored_args(${1:a}, ${2:b})$0", | ||
776 | kind: Method, | ||
777 | lookup: "foo_ignored_args", | ||
778 | detail: "fn foo_ignored_args(&self, _a: bool, b: i32)", | ||
779 | trigger_call_info: true, | ||
780 | }, | ||
781 | ] | ||
782 | "### | ||
783 | ); | 692 | ); |
784 | } | 693 | } |
785 | 694 | ||