Unnamed repository; edit this file 'description' to name the repository.
Merge #11436
11436: fix: renaming modules does not change references by super r=Veykril a=TheDoctor314 Fixes #11289. Co-authored-by: TheDoctor314 <[email protected]>
bors[bot] 2022-02-09
parent 9b1978a · parent 10e7e18 · commit 8ac4595
-rw-r--r--crates/ide/src/rename.rs25
-rw-r--r--crates/ide_db/src/rename.rs4
2 files changed, 29 insertions, 0 deletions
diff --git a/crates/ide/src/rename.rs b/crates/ide/src/rename.rs
index f9f9c0832c..971bcede5a 100644
--- a/crates/ide/src/rename.rs
+++ b/crates/ide/src/rename.rs
@@ -1109,6 +1109,31 @@ pub mod foo$0;
}
#[test]
+ fn test_rename_mod_ref_by_super() {
+ check(
+ "baz",
+ r#"
+ mod $0foo {
+ struct X;
+
+ mod bar {
+ use super::X;
+ }
+ }
+ "#,
+ r#"
+ mod baz {
+ struct X;
+
+ mod bar {
+ use super::X;
+ }
+ }
+ "#,
+ )
+ }
+
+ #[test]
fn test_enum_variant_from_module_1() {
cov_mark::check!(rename_non_local);
check(
diff --git a/crates/ide_db/src/rename.rs b/crates/ide_db/src/rename.rs
index 188499db72..4392ae3e5a 100644
--- a/crates/ide_db/src/rename.rs
+++ b/crates/ide_db/src/rename.rs
@@ -343,6 +343,10 @@ fn source_edit_from_name_ref(
new_name: &str,
def: Definition,
) -> bool {
+ if name_ref.super_token().is_some() {
+ return true;
+ }
+
if let Some(record_field) = ast::RecordExprField::for_name_ref(name_ref) {
let rcf_name_ref = record_field.name_ref();
let rcf_expr = record_field.expr();