diff options
| author | harpsword <harpswordyyl@gmail.com> | 2022-07-07 22:25:25 +0800 |
|---|---|---|
| committer | harpsword <harpswordyyl@gmail.com> | 2022-07-10 10:45:03 +0800 |
| commit | 4b3164f129dcbbf6a4d15a4c01bfdb01f3f8721e (patch) | |
| tree | b270e1cc693784795386b5c47efe7573b36c64a8 | |
| parent | fee5555cfabed4b8abbd40983fc4442df4007e49 (diff) | |
| download | rust-4b3164f129dcbbf6a4d15a4c01bfdb01f3f8721e.tar.gz rust-4b3164f129dcbbf6a4d15a4c01bfdb01f3f8721e.zip | |
fix: ignore renames for crate root
| -rw-r--r-- | crates/ide-db/src/rename.rs | 4 | ||||
| -rw-r--r-- | crates/ide/src/rename.rs | 29 |
2 files changed, 33 insertions, 0 deletions
diff --git a/crates/ide-db/src/rename.rs b/crates/ide-db/src/rename.rs index 8f83496e938..59cbde0944d 100644 --- a/crates/ide-db/src/rename.rs +++ b/crates/ide-db/src/rename.rs @@ -177,6 +177,10 @@ fn rename_mod( let mut source_change = SourceChange::default(); + if module.is_crate_root(sema.db) { + return Ok(source_change); + } + let InFile { file_id, value: def_source } = module.definition_source(sema.db); if let ModuleSource::SourceFile(..) = def_source { let anchor = file_id.original_file(sema.db); diff --git a/crates/ide/src/rename.rs b/crates/ide/src/rename.rs index 0f8033611a1..23d6f8d8e4e 100644 --- a/crates/ide/src/rename.rs +++ b/crates/ide/src/rename.rs @@ -379,6 +379,15 @@ mod tests { expect.assert_debug_eq(&source_change) } + fn check_expect_will_rename_file(new_name: &str, ra_fixture: &str, expect: Expect) { + let (analysis, position) = fixture::position(ra_fixture); + let source_change = analysis + .will_rename_file(position.file_id, new_name) + .unwrap() + .expect("Expect returned a RenameError"); + expect.assert_debug_eq(&source_change) + } + fn check_prepare(ra_fixture: &str, expect: Expect) { let (analysis, position) = fixture::position(ra_fixture); let result = analysis @@ -1246,6 +1255,26 @@ submodule!(bar); } #[test] + fn test_rename_mod_for_crate_root() { + check_expect_will_rename_file( + "main", + r#" +//- /lib.rs +use crate::foo as bar; +fn foo() {} +mod bar$0; +"#, + expect![[r#" + SourceChange { + source_file_edits: {}, + file_system_edits: [], + is_snippet: false, + } + "#]], + ) + } + + #[test] fn test_enum_variant_from_module_1() { cov_mark::check!(rename_non_local); check( |
