Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #22012 from A4-Tacks/no-import-on-type-anchor-qualifier
fix: no imports on type anchor qualified path
| -rw-r--r-- | crates/ide-completion/src/completions/flyimport.rs | 3 | ||||
| -rw-r--r-- | crates/ide-completion/src/tests/flyimport.rs | 33 |
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#" |