diff options
| author | Khanh Duong Quoc <dqkqdlot@gmail.com> | 2024-10-24 20:17:24 +0900 |
|---|---|---|
| committer | Khanh Duong Quoc <dqkqdlot@gmail.com> | 2024-10-24 20:17:24 +0900 |
| commit | 1b699b5d6c9d1dd9f7d24b2065ef22afa81af04e (patch) | |
| tree | be19fdf0c057cbdcc056f1b7544f04da47613eb6 | |
| parent | 75a659e4d271aee9ebb1371dab13ff2aabea3d65 (diff) | |
| download | rust-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.rs | 2 | ||||
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide-completion/src/tests/flyimport.rs | 53 |
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) "#]], ); } |
