]> git.lizzy.rs Git - rust.git/commitdiff
Fix module renaming
authorAleksey Kladov <aleksey.kladov@gmail.com>
Fri, 3 Jul 2020 16:45:18 +0000 (18:45 +0200)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Fri, 3 Jul 2020 16:47:26 +0000 (18:47 +0200)
crates/ra_ide/src/references/rename.rs

index bbf475f6670aef7dd758e13ed7687a7cd37910df..8735ec53cf2ae379ffed0b2f82c08c2d061025d6 100644 (file)
@@ -116,8 +116,7 @@ fn rename_mod(
             } else {
                 format!("{}.rs", new_name)
             };
-            let move_file =
-                FileSystemEdit::MoveFile { src: file_id, anchor: position.file_id, dst };
+            let move_file = FileSystemEdit::MoveFile { src: file_id, anchor: file_id, dst };
             file_system_edits.push(move_file);
         }
         ModuleSource::Module(..) => {}
@@ -621,7 +620,7 @@ fn test_rename_mod() {
                                     3,
                                 ),
                                 anchor: FileId(
-                                    2,
+                                    3,
                                 ),
                                 dst: "foo2.rs",
                             },
@@ -687,7 +686,7 @@ fn main() {}
                                     2,
                                 ),
                                 anchor: FileId(
-                                    3,
+                                    2,
                                 ),
                                 dst: "quux.rs",
                             },
@@ -734,7 +733,7 @@ fn test_rename_mod_in_dir() {
                                     2,
                                 ),
                                 anchor: FileId(
-                                    1,
+                                    2,
                                 ),
                                 dst: "../foo2/mod.rs",
                             },
@@ -746,6 +745,54 @@ fn test_rename_mod_in_dir() {
         );
     }
 
+    #[test]
+    fn test_rename_unusually_nested_mod() {
+        check_expect(
+            "bar",
+            r#"
+//- /lib.rs
+mod outer { mod fo<|>o; }
+
+//- /outer/foo.rs
+// emtpy
+"#,
+            expect![[r#"
+                RangeInfo {
+                    range: 16..19,
+                    info: SourceChange {
+                        source_file_edits: [
+                            SourceFileEdit {
+                                file_id: FileId(
+                                    1,
+                                ),
+                                edit: TextEdit {
+                                    indels: [
+                                        Indel {
+                                            insert: "bar",
+                                            delete: 16..19,
+                                        },
+                                    ],
+                                },
+                            },
+                        ],
+                        file_system_edits: [
+                            MoveFile {
+                                src: FileId(
+                                    2,
+                                ),
+                                anchor: FileId(
+                                    2,
+                                ),
+                                dst: "bar.rs",
+                            },
+                        ],
+                        is_snippet: false,
+                    },
+                }
+            "#]],
+        );
+    }
+
     #[test]
     fn test_module_rename_in_path() {
         check(
@@ -818,7 +865,7 @@ fn f() {
                                     3,
                                 ),
                                 anchor: FileId(
-                                    2,
+                                    3,
                                 ),
                                 dst: "foo2.rs",
                             },