From 426ad8e165aeb70a3d12b8bc870cb0c57a308bc7 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Thu, 28 Jan 2021 19:06:33 +0100 Subject: Classify function calls as functions when shadowed by types --- crates/hir/src/source_analyzer.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'crates/hir') diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs index 30a8e513d..524120d08 100644 --- a/crates/hir/src/source_analyzer.rs +++ b/crates/hir/src/source_analyzer.rs @@ -224,14 +224,18 @@ impl SourceAnalyzer { ) -> Option { if let Some(path_expr) = path.syntax().parent().and_then(ast::PathExpr::cast) { let expr_id = self.expr_id(db, &path_expr.into())?; - if let Some(assoc) = self.infer.as_ref()?.assoc_resolutions_for_expr(expr_id) { + let infer = self.infer.as_ref()?; + if let Some(assoc) = infer.assoc_resolutions_for_expr(expr_id) { return Some(PathResolution::AssocItem(assoc.into())); } if let Some(VariantId::EnumVariantId(variant)) = - self.infer.as_ref()?.variant_resolution_for_expr(expr_id) + infer.variant_resolution_for_expr(expr_id) { return Some(PathResolution::Def(ModuleDef::Variant(variant.into()))); } + if let Some(func) = infer[expr_id].as_fn_def() { + return Some(PathResolution::Def(ModuleDef::Function(func.into()))); + } } if let Some(path_pat) = path.syntax().parent().and_then(ast::PathPat::cast) { -- cgit v1.2.3