From d4043a8dbafe6de9517dee760967dd0218bf28b7 Mon Sep 17 00:00:00 2001
From: Aleksey Kladov <aleksey.kladov@gmail.com>
Date: Sat, 13 Apr 2019 09:45:52 +0300
Subject: [PATCH] only def-with-body remains

---
 crates/ra_hir/src/source_binder.rs | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)

diff --git a/crates/ra_hir/src/source_binder.rs b/crates/ra_hir/src/source_binder.rs
index 5bb6d64ffc9..67bf2de895f 100644
--- a/crates/ra_hir/src/source_binder.rs
+++ b/crates/ra_hir/src/source_binder.rs
@@ -12,6 +12,7 @@ use ra_syntax::{
     SyntaxNode, AstPtr, TextUnit,
     ast::{self, AstNode, NameOwner},
     algo::find_node_at_offset,
+    SyntaxKind::*,
 };
 
 use crate::{
@@ -90,17 +91,6 @@ fn module_from_source(
     )
 }
 
-fn function_from_source(
-    db: &impl HirDatabase,
-    file_id: FileId,
-    fn_def: &ast::FnDef,
-) -> Option<Function> {
-    let module = module_from_child_node(db, file_id, fn_def.syntax())?;
-    let file_id = file_id.into();
-    let ctx = LocationCtx::new(db, module, file_id);
-    Some(Function { id: ctx.to_def(fn_def) })
-}
-
 pub fn struct_from_module(
     db: &impl HirDatabase,
     module: Module,
@@ -168,8 +158,8 @@ fn try_get_resolver_for_node(
     } else if let Some(e) = ast::EnumDef::cast(node) {
         let module = module_from_child_node(db, file_id, e.syntax())?;
         Some(enum_from_module(db, module, e).resolver(db))
-    } else if let Some(f) = ast::FnDef::cast(node) {
-        function_from_source(db, file_id, f).map(|f| f.resolver(db))
+    } else if node.kind() == FN_DEF || node.kind() == CONST_DEF || node.kind() == STATIC_DEF {
+        Some(def_with_body_from_child_node(db, file_id, node)?.resolver(db))
     } else {
         // FIXME add missing cases
         None