about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-02-08 23:19:07 +0000
committerGitHub <noreply@github.com>2022-02-08 23:19:07 +0000
commit8ac459501ea74bf19ad664b4df135cf340c889ba (patch)
tree8847f870437ccf9e019eab9212615582597db736
parent9b1978a3ed405c2a5ec34703914ec1878b599e14 (diff)
parent10e7e18dc6401dd57b13479c75362c681ee078ca (diff)
downloadrust-8ac459501ea74bf19ad664b4df135cf340c889ba.tar.gz
rust-8ac459501ea74bf19ad664b4df135cf340c889ba.zip
Merge #11436
11436: fix: renaming modules does not change references by super r=Veykril a=TheDoctor314

Fixes #11289.

Co-authored-by: TheDoctor314 <64731940+TheDoctor314@users.noreply.github.com>
-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 f9f9c0832cd..971bcede5ac 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 188499db72c..4392ae3e5ab 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();