Unnamed repository; edit this file 'description' to name the repository.
fix: no imports on type anchor qualified path
Example --- ```rust fn main() { <Bar as Foo>::foo$0 } mod m { pub fn foo() {} } struct Bar; trait Foo {} impl Foo for Bar {} ``` **Before this PR** ``` fn foo() (use m::foo) fn() ``` **After this PR** no any imports
A4-Tacks 6 weeks ago
parent 7d23c32 · commit 8ecba8a
-rw-r--r--crates/ide-completion/src/completions/flyimport.rs3
-rw-r--r--crates/ide-completion/src/tests/flyimport.rs33
2 files changed, 35 insertions, 1 deletions
diff --git a/crates/ide-completion/src/completions/flyimport.rs b/crates/ide-completion/src/completions/flyimport.rs
index 413830904a..2cf87baf33 100644
--- a/crates/ide-completion/src/completions/flyimport.rs
+++ b/crates/ide-completion/src/completions/flyimport.rs
@@ -133,7 +133,8 @@ pub(crate) fn import_on_the_fly_path(
let potential_import_name = import_name(ctx);
let qualifier = match qualified {
Qualified::With { path, .. } => Some(path.clone()),
- _ => None,
+ Qualified::TypeAnchor { .. } => return None,
+ Qualified::No | Qualified::Absolute => None,
};
let import_assets = import_assets_for_path(
ctx,
diff --git a/crates/ide-completion/src/tests/flyimport.rs b/crates/ide-completion/src/tests/flyimport.rs
index d7db896679..5391e6c9ce 100644
--- a/crates/ide-completion/src/tests/flyimport.rs
+++ b/crates/ide-completion/src/tests/flyimport.rs
@@ -1243,6 +1243,39 @@ impl Bar for Foo {
}
#[test]
+fn no_flyimports_type_anchor() {
+ check(
+ r#"
+mod m {
+ pub fn foo() {}
+}
+struct Bar;
+trait Foo {}
+impl Foo for Bar {}
+fn main() {
+ <Bar as Foo>::foo$0
+}
+ "#,
+ expect![[r#""#]],
+ );
+
+ check(
+ r#"
+mod m {
+ pub fn foo() {}
+}
+struct Bar;
+trait Foo {}
+impl Foo for Bar {}
+fn main() {
+ <Bar>::foo$0
+}
+ "#,
+ expect![[r#""#]],
+ );
+}
+
+#[test]
fn no_inherent_candidates_proposed() {
check(
r#"