diff options
-rw-r--r-- | crates/ra_ide/src/references/rename.rs | 250 |
1 files changed, 57 insertions, 193 deletions
diff --git a/crates/ra_ide/src/references/rename.rs b/crates/ra_ide/src/references/rename.rs index f4b11cbd0..fbc10d3bb 100644 --- a/crates/ra_ide/src/references/rename.rs +++ b/crates/ra_ide/src/references/rename.rs | |||
@@ -271,7 +271,7 @@ fn rename_reference( | |||
271 | 271 | ||
272 | #[cfg(test)] | 272 | #[cfg(test)] |
273 | mod tests { | 273 | mod tests { |
274 | use insta::assert_debug_snapshot; | 274 | use expect::{expect, Expect}; |
275 | use ra_text_edit::TextEditBuilder; | 275 | use ra_text_edit::TextEditBuilder; |
276 | use stdx::trim_indent; | 276 | use stdx::trim_indent; |
277 | use test_utils::{assert_eq_text, mark}; | 277 | use test_utils::{assert_eq_text, mark}; |
@@ -297,6 +297,12 @@ mod tests { | |||
297 | assert_eq_text!(ra_fixture_after, &*result); | 297 | assert_eq_text!(ra_fixture_after, &*result); |
298 | } | 298 | } |
299 | 299 | ||
300 | fn check_expect(new_name: &str, ra_fixture: &str, expect: Expect) { | ||
301 | let (analysis, position) = analysis_and_position(ra_fixture); | ||
302 | let source_change = analysis.rename(position, new_name).unwrap().unwrap(); | ||
303 | expect.assert_debug_eq(&source_change) | ||
304 | } | ||
305 | |||
300 | #[test] | 306 | #[test] |
301 | fn test_rename_to_underscore() { | 307 | fn test_rename_to_underscore() { |
302 | check( | 308 | check( |
@@ -650,7 +656,8 @@ fn baz(j: i32) -> Self { | |||
650 | 656 | ||
651 | #[test] | 657 | #[test] |
652 | fn test_rename_mod() { | 658 | fn test_rename_mod() { |
653 | let (analysis, position) = analysis_and_position( | 659 | check_expect( |
660 | "foo2", | ||
654 | r#" | 661 | r#" |
655 | //- /lib.rs | 662 | //- /lib.rs |
656 | mod bar; | 663 | mod bar; |
@@ -659,53 +666,49 @@ mod bar; | |||
659 | mod foo<|>; | 666 | mod foo<|>; |
660 | 667 | ||
661 | //- /bar/foo.rs | 668 | //- /bar/foo.rs |
662 | // emtpy | 669 | // empty |
663 | "#, | 670 | "#, |
664 | ); | 671 | expect![[r#" |
665 | let new_name = "foo2"; | 672 | RangeInfo { |
666 | let source_change = analysis.rename(position, new_name).unwrap(); | 673 | range: 4..7, |
667 | assert_debug_snapshot!(&source_change, | 674 | info: SourceChange { |
668 | @r###" | 675 | source_file_edits: [ |
669 | Some( | 676 | SourceFileEdit { |
670 | RangeInfo { | 677 | file_id: FileId( |
671 | range: 4..7, | 678 | 2, |
672 | info: SourceChange { | 679 | ), |
673 | source_file_edits: [ | 680 | edit: TextEdit { |
674 | SourceFileEdit { | 681 | indels: [ |
675 | file_id: FileId( | 682 | Indel { |
676 | 2, | 683 | insert: "foo2", |
677 | ), | 684 | delete: 4..7, |
678 | edit: TextEdit { | 685 | }, |
679 | indels: [ | 686 | ], |
680 | Indel { | 687 | }, |
681 | insert: "foo2", | ||
682 | delete: 4..7, | ||
683 | }, | ||
684 | ], | ||
685 | }, | 688 | }, |
686 | }, | 689 | ], |
687 | ], | 690 | file_system_edits: [ |
688 | file_system_edits: [ | 691 | MoveFile { |
689 | MoveFile { | 692 | src: FileId( |
690 | src: FileId( | 693 | 3, |
691 | 3, | 694 | ), |
692 | ), | 695 | anchor: FileId( |
693 | anchor: FileId( | 696 | 2, |
694 | 2, | 697 | ), |
695 | ), | 698 | dst: "foo2.rs", |
696 | dst: "foo2.rs", | 699 | }, |
697 | }, | 700 | ], |
698 | ], | 701 | is_snippet: false, |
699 | is_snippet: false, | 702 | }, |
700 | }, | 703 | } |
701 | }, | 704 | "#]], |
702 | ) | 705 | ); |
703 | "###); | ||
704 | } | 706 | } |
705 | 707 | ||
706 | #[test] | 708 | #[test] |
707 | fn test_rename_mod_in_use_tree() { | 709 | fn test_rename_mod_in_use_tree() { |
708 | let (analysis, position) = analysis_and_position( | 710 | check_expect( |
711 | "quux", | ||
709 | r#" | 712 | r#" |
710 | //- /main.rs | 713 | //- /main.rs |
711 | pub mod foo; | 714 | pub mod foo; |
@@ -717,112 +720,23 @@ pub struct FooContent; | |||
717 | 720 | ||
718 | //- /bar.rs | 721 | //- /bar.rs |
719 | use crate::foo<|>::FooContent; | 722 | use crate::foo<|>::FooContent; |
720 | "#, | 723 | "#, |
724 | expect![[]], | ||
721 | ); | 725 | ); |
722 | let new_name = "qux"; | ||
723 | let source_change = analysis.rename(position, new_name).unwrap(); | ||
724 | assert_debug_snapshot!(&source_change, | ||
725 | @r###" | ||
726 | Some( | ||
727 | RangeInfo { | ||
728 | range: 11..14, | ||
729 | info: SourceChange { | ||
730 | source_file_edits: [ | ||
731 | SourceFileEdit { | ||
732 | file_id: FileId( | ||
733 | 1, | ||
734 | ), | ||
735 | edit: TextEdit { | ||
736 | indels: [ | ||
737 | Indel { | ||
738 | insert: "qux", | ||
739 | delete: 8..11, | ||
740 | }, | ||
741 | ], | ||
742 | }, | ||
743 | }, | ||
744 | SourceFileEdit { | ||
745 | file_id: FileId( | ||
746 | 3, | ||
747 | ), | ||
748 | edit: TextEdit { | ||
749 | indels: [ | ||
750 | Indel { | ||
751 | insert: "qux", | ||
752 | delete: 11..14, | ||
753 | }, | ||
754 | ], | ||
755 | }, | ||
756 | }, | ||
757 | ], | ||
758 | file_system_edits: [ | ||
759 | MoveFile { | ||
760 | src: FileId( | ||
761 | 2, | ||
762 | ), | ||
763 | anchor: FileId( | ||
764 | 3, | ||
765 | ), | ||
766 | dst: "qux.rs", | ||
767 | }, | ||
768 | ], | ||
769 | is_snippet: false, | ||
770 | }, | ||
771 | }, | ||
772 | ) | ||
773 | "###); | ||
774 | } | 726 | } |
775 | 727 | ||
776 | #[test] | 728 | #[test] |
777 | fn test_rename_mod_in_dir() { | 729 | fn test_rename_mod_in_dir() { |
778 | let (analysis, position) = analysis_and_position( | 730 | check_expect( |
731 | "foo2", | ||
779 | r#" | 732 | r#" |
780 | //- /lib.rs | 733 | //- /lib.rs |
781 | mod fo<|>o; | 734 | mod fo<|>o; |
782 | //- /foo/mod.rs | 735 | //- /foo/mod.rs |
783 | // emtpy | 736 | // emtpy |
784 | "#, | 737 | "#, |
738 | expect![[]], | ||
785 | ); | 739 | ); |
786 | let new_name = "foo2"; | ||
787 | let source_change = analysis.rename(position, new_name).unwrap(); | ||
788 | assert_debug_snapshot!(&source_change, | ||
789 | @r###" | ||
790 | Some( | ||
791 | RangeInfo { | ||
792 | range: 4..7, | ||
793 | info: SourceChange { | ||
794 | source_file_edits: [ | ||
795 | SourceFileEdit { | ||
796 | file_id: FileId( | ||
797 | 1, | ||
798 | ), | ||
799 | edit: TextEdit { | ||
800 | indels: [ | ||
801 | Indel { | ||
802 | insert: "foo2", | ||
803 | delete: 4..7, | ||
804 | }, | ||
805 | ], | ||
806 | }, | ||
807 | }, | ||
808 | ], | ||
809 | file_system_edits: [ | ||
810 | MoveFile { | ||
811 | src: FileId( | ||
812 | 2, | ||
813 | ), | ||
814 | anchor: FileId( | ||
815 | 1, | ||
816 | ), | ||
817 | dst: "../foo2/mod.rs", | ||
818 | }, | ||
819 | ], | ||
820 | is_snippet: false, | ||
821 | }, | ||
822 | }, | ||
823 | ) | ||
824 | "### | ||
825 | ); | ||
826 | } | 740 | } |
827 | 741 | ||
828 | #[test] | 742 | #[test] |
@@ -852,7 +766,8 @@ fn main() { | |||
852 | 766 | ||
853 | #[test] | 767 | #[test] |
854 | fn test_rename_mod_filename_and_path() { | 768 | fn test_rename_mod_filename_and_path() { |
855 | let (analysis, position) = analysis_and_position( | 769 | check_expect( |
770 | "foo2", | ||
856 | r#" | 771 | r#" |
857 | //- /lib.rs | 772 | //- /lib.rs |
858 | mod bar; | 773 | mod bar; |
@@ -865,60 +780,9 @@ pub mod foo<|>; | |||
865 | 780 | ||
866 | //- /bar/foo.rs | 781 | //- /bar/foo.rs |
867 | // pub fn fun() {} | 782 | // pub fn fun() {} |
868 | "#, | 783 | "#, |
784 | expect![[]], | ||
869 | ); | 785 | ); |
870 | let new_name = "foo2"; | ||
871 | let source_change = analysis.rename(position, new_name).unwrap(); | ||
872 | assert_debug_snapshot!(&source_change, | ||
873 | @r###" | ||
874 | Some( | ||
875 | RangeInfo { | ||
876 | range: 8..11, | ||
877 | info: SourceChange { | ||
878 | source_file_edits: [ | ||
879 | SourceFileEdit { | ||
880 | file_id: FileId( | ||
881 | 2, | ||
882 | ), | ||
883 | edit: TextEdit { | ||
884 | indels: [ | ||
885 | Indel { | ||
886 | insert: "foo2", | ||
887 | delete: 8..11, | ||
888 | }, | ||
889 | ], | ||
890 | }, | ||
891 | }, | ||
892 | SourceFileEdit { | ||
893 | file_id: FileId( | ||
894 | 1, | ||
895 | ), | ||
896 | edit: TextEdit { | ||
897 | indels: [ | ||
898 | Indel { | ||
899 | insert: "foo2", | ||
900 | delete: 27..30, | ||
901 | }, | ||
902 | ], | ||
903 | }, | ||
904 | }, | ||
905 | ], | ||
906 | file_system_edits: [ | ||
907 | MoveFile { | ||
908 | src: FileId( | ||
909 | 3, | ||
910 | ), | ||
911 | anchor: FileId( | ||
912 | 2, | ||
913 | ), | ||
914 | dst: "foo2.rs", | ||
915 | }, | ||
916 | ], | ||
917 | is_snippet: false, | ||
918 | }, | ||
919 | }, | ||
920 | ) | ||
921 | "###); | ||
922 | } | 786 | } |
923 | 787 | ||
924 | #[test] | 788 | #[test] |