From 1d74ef1d989b3d37f3f08d32e88670ee0f1f7ab6 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 8 Jun 2021 16:50:10 +0200 Subject: Don't complete values in type position --- crates/ide_completion/src/render.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'crates/ide_completion/src/render.rs') diff --git a/crates/ide_completion/src/render.rs b/crates/ide_completion/src/render.rs index 750694432..7118183fe 100644 --- a/crates/ide_completion/src/render.rs +++ b/crates/ide_completion/src/render.rs @@ -18,6 +18,7 @@ use ide_db::{ use syntax::TextRange; use crate::{ + context::{PathCompletionContext, PathKind}, item::{CompletionRelevanceTypeMatch, ImportEdit}, render::{enum_variant::render_variant, function::render_fn, macro_::render_macro}, CompletionContext, CompletionItem, CompletionItemKind, CompletionKind, CompletionRelevance, @@ -54,6 +55,9 @@ pub(crate) fn render_resolution_with_import<'a>( import_edit: ImportEdit, ) -> Option { let resolution = hir::ScopeDef::from(import_edit.import.original_item); + if ctx.completion.expects_type() && resolution.is_value_def() { + return None; + } let local_name = match resolution { hir::ScopeDef::ModuleDef(hir::ModuleDef::Function(f)) => f.name(ctx.completion.db), hir::ScopeDef::ModuleDef(hir::ModuleDef::Const(c)) => c.name(ctx.completion.db)?, @@ -275,13 +279,10 @@ impl<'a> Render<'a> { }; // Add `<>` for generic types - if self - .ctx - .completion - .path_context - .as_ref() - .map_or(false, |it| it.is_path_type && !it.has_type_args) - && self.ctx.completion.config.add_call_parenthesis + if matches!( + self.ctx.completion.path_context, + Some(PathCompletionContext { kind: Some(PathKind::Type), has_type_args: false, .. }) + ) && self.ctx.completion.config.add_call_parenthesis { if let Some(cap) = self.ctx.snippet_cap() { let has_non_default_type_params = match resolution { -- cgit v1.2.3