From 109a7f3717612c58c73c5c153b632385b922fc9d Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 27 Nov 2018 22:58:09 +0300 Subject: itroduce FunctionDescriptor --- crates/ra_analysis/src/hir/function/mod.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'crates/ra_analysis/src/hir/function') diff --git a/crates/ra_analysis/src/hir/function/mod.rs b/crates/ra_analysis/src/hir/function/mod.rs index 86eee5e93..c8af6bc21 100644 --- a/crates/ra_analysis/src/hir/function/mod.rs +++ b/crates/ra_analysis/src/hir/function/mod.rs @@ -1,7 +1,10 @@ pub(super) mod imp; mod scope; -use std::cmp::{max, min}; +use std::{ + cmp::{max, min}, + sync::Arc, +}; use ra_syntax::{ ast::{self, AstNode, DocCommentsOwner, NameOwner}, @@ -9,6 +12,7 @@ use ra_syntax::{ }; use crate::{ + hir::HirDatabase, syntax_ptr::SyntaxPtr, FileId, loc2id::IdDatabase, }; @@ -23,6 +27,25 @@ impl FnId { } } +pub(crate) struct FunctionDescriptor { + fn_id: FnId, +} + +impl FunctionDescriptor { + pub(crate) fn guess_from_source( + db: &impl HirDatabase, + file_id: FileId, + fn_def: ast::FnDef, + ) -> FunctionDescriptor { + let fn_id = FnId::get(db, file_id, fn_def); + FunctionDescriptor { fn_id } + } + + pub(crate) fn scope(&self, db: &impl HirDatabase) -> Arc { + db.fn_scopes(self.fn_id) + } +} + #[derive(Debug, Clone)] pub struct FnDescriptor { pub name: String, -- cgit v1.2.3