Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/ide-completion/src/completions.rs4
-rw-r--r--crates/ide-completion/src/tests/type_pos.rs20
2 files changed, 23 insertions, 1 deletions
diff --git a/crates/ide-completion/src/completions.rs b/crates/ide-completion/src/completions.rs
index 2ed582598b..ed972a1e2a 100644
--- a/crates/ide-completion/src/completions.rs
+++ b/crates/ide-completion/src/completions.rs
@@ -34,7 +34,8 @@ use crate::{
CompletionContext, CompletionItem, CompletionItemKind,
context::{
DotAccess, ItemListKind, NameContext, NameKind, NameRefContext, NameRefKind,
- PathCompletionCtx, PathKind, PatternContext, TypeAscriptionTarget, TypeLocation, Visible,
+ PathCompletionCtx, PathKind, PatternContext, Qualified, TypeAscriptionTarget, TypeLocation,
+ Visible,
},
item::Builder,
render::{
@@ -752,6 +753,7 @@ pub(super) fn complete_name_ref(
if let TypeAscriptionTarget::RetType { item: Some(item), .. } =
ascription
&& path_ctx.required_thin_arrow().is_some()
+ && matches!(path_ctx.qualified, Qualified::No)
{
keyword::complete_for_and_where(acc, ctx, &item.clone().into());
}
diff --git a/crates/ide-completion/src/tests/type_pos.rs b/crates/ide-completion/src/tests/type_pos.rs
index 7d4a7fe6b8..1a4c255fc0 100644
--- a/crates/ide-completion/src/tests/type_pos.rs
+++ b/crates/ide-completion/src/tests/type_pos.rs
@@ -142,6 +142,26 @@ fn x() $0
kw where
"#]],
);
+
+ check_with_base_items(
+ r#"
+mod foo { pub struct Bar; }
+fn x() foo::$0
+"#,
+ expect![[r#"
+ st Bar (adds ->) Bar
+ "#]],
+ );
+
+ check_with_base_items(
+ r#"
+mod foo { pub struct Bar; }
+fn x() foo::b$0
+"#,
+ expect![[r#"
+ st Bar (adds ->) Bar
+ "#]],
+ );
}
#[test]