about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKhanh Duong Quoc <dqkqdlot@gmail.com>2024-10-24 20:17:24 +0900
committerKhanh Duong Quoc <dqkqdlot@gmail.com>2024-10-24 20:17:24 +0900
commit1b699b5d6c9d1dd9f7d24b2065ef22afa81af04e (patch)
treebe19fdf0c057cbdcc056f1b7544f04da47613eb6
parent75a659e4d271aee9ebb1371dab13ff2aabea3d65 (diff)
downloadrust-1b699b5d6c9d1dd9f7d24b2065ef22afa81af04e.tar.gz
rust-1b699b5d6c9d1dd9f7d24b2065ef22afa81af04e.zip
fix: handle aliased pattern and simplify testcase
-rw-r--r--src/tools/rust-analyzer/crates/ide-completion/src/render.rs2
-rw-r--r--src/tools/rust-analyzer/crates/ide-completion/src/tests/flyimport.rs53
2 files changed, 32 insertions, 23 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/render.rs b/src/tools/rust-analyzer/crates/ide-completion/src/render.rs
index 08a3450fda8..d146990c5a3 100644
--- a/src/tools/rust-analyzer/crates/ide-completion/src/render.rs
+++ b/src/tools/rust-analyzer/crates/ide-completion/src/render.rs
@@ -294,7 +294,7 @@ pub(crate) fn render_resolution_with_import_pat(
     import_edit: LocatedImport,
 ) -> Option<Builder> {
     let resolution = ScopeDef::from(import_edit.original_item);
-    let local_name = scope_def_to_name(resolution, &ctx, &import_edit)?;
+    let local_name = get_import_name(resolution, &ctx, &import_edit)?;
     Some(render_resolution_pat(ctx, pattern_ctx, local_name, Some(import_edit), resolution))
 }
 
diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/tests/flyimport.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/flyimport.rs
index 1ca0116c793..4b949e0d657 100644
--- a/src/tools/rust-analyzer/crates/ide-completion/src/tests/flyimport.rs
+++ b/src/tools/rust-analyzer/crates/ide-completion/src/tests/flyimport.rs
@@ -1671,43 +1671,52 @@ mod module {
 }
 
 #[test]
-fn re_export_aliased_function() {
+fn re_export_aliased() {
     check(
         r#"
-//- /lib.rs crate:bar
-pub fn func(_: i32) -> i32 {}
-
-//- /lib.rs crate:foo deps:bar
-pub use bar::func as my_func;
-
-//- /main.rs crate:main deps:foo
-fn main() {
-    m$0
+mod outer {
+    mod inner {
+        pub struct BarStruct;
+        pub fn bar_fun() {}
+        pub mod bar {}
+    }
+    pub use inner::bar as foo;
+    pub use inner::bar_fun as foo_fun;
+    pub use inner::BarStruct as FooStruct;
+}
+fn function() {
+    foo$0
 }
 "#,
         expect![[r#"
-            fn my_func(…) (use foo::my_func) fn(i32) -> i32
+            st FooStruct (use outer::FooStruct) BarStruct
+            md foo (use outer::foo)
+            fn foo_fun() (use outer::foo_fun) fn()
         "#]],
     );
 }
 
 #[test]
-fn re_export_aliased_module() {
+fn re_export_aliased_pattern() {
     check(
         r#"
-//- /lib.rs crate:bar
-pub mod baz {}
-
-//- /lib.rs crate:foo deps:bar
-pub use bar::baz as my_baz;
-
-//- /main.rs crate:main deps:foo
-fn main() {
-    m$0
+mod outer {
+    mod inner {
+        pub struct BarStruct;
+        pub fn bar_fun() {}
+        pub mod bar {}
+    }
+    pub use inner::bar as foo;
+    pub use inner::bar_fun as foo_fun;
+    pub use inner::BarStruct as FooStruct;
+}
+fn function() {
+    let foo$0
 }
 "#,
         expect![[r#"
-            md my_baz (use foo::my_baz)
+            st FooStruct (use outer::FooStruct)
+            md foo (use outer::foo)
         "#]],
     );
 }