Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/expr.rs')
-rw-r--r--crates/ide-completion/src/completions/expr.rs17
1 files changed, 15 insertions, 2 deletions
diff --git a/crates/ide-completion/src/completions/expr.rs b/crates/ide-completion/src/completions/expr.rs
index 8c532e0f4d..c15c67173e 100644
--- a/crates/ide-completion/src/completions/expr.rs
+++ b/crates/ide-completion/src/completions/expr.rs
@@ -317,7 +317,12 @@ pub(crate) fn complete_expr_path(
}
// synthetic names currently leak out as we lack synthetic hygiene, so filter them
// out here
- ScopeDef::Local(_) => {
+ ScopeDef::Local(_) =>
+ {
+ #[expect(
+ clippy::collapsible_match,
+ reason = "this changes meaning, causing the next arm to be selected"
+ )]
if !name.as_str().starts_with('<') {
acc.add_path_resolution(ctx, path_ctx, name, def, doc_aliases)
}
@@ -451,7 +456,11 @@ pub(crate) fn complete_expr_path(
}
}
-pub(crate) fn complete_expr(acc: &mut Completions, ctx: &CompletionContext<'_>) {
+pub(crate) fn complete_expr(
+ acc: &mut Completions,
+ ctx: &CompletionContext<'_>,
+ PathCompletionCtx { qualified, .. }: &PathCompletionCtx<'_>,
+) {
let _p = tracing::info_span!("complete_expr").entered();
if !ctx.config.enable_term_search {
@@ -462,6 +471,10 @@ pub(crate) fn complete_expr(acc: &mut Completions, ctx: &CompletionContext<'_>)
return;
}
+ if !matches!(qualified, Qualified::No) {
+ return;
+ }
+
if let Some(ty) = &ctx.expected_type {
// Ignore unit types as they are not very interesting
if ty.is_unit() || ty.is_unknown() {