split HirDatabase api

This commit is contained in:
csmoe
2019-02-01 18:33:41 +08:00
parent 12433a7887
commit 4dffdcf14a
21 changed files with 147 additions and 106 deletions

View File

@@ -5,7 +5,7 @@ use ra_syntax::ast::{self, NameOwner};
use crate::{
HirDatabase, Name, AsName, Function, FnSignature,
type_ref::{TypeRef, Mutability},
expr::Body,
expr::Body, PersistentHirDatabase,
impl_block::ImplBlock,
};
@@ -22,7 +22,10 @@ impl Function {
}
impl FnSignature {
pub(crate) fn fn_signature_query(db: &impl HirDatabase, func: Function) -> Arc<FnSignature> {
pub(crate) fn fn_signature_query(
db: &impl PersistentHirDatabase,
func: Function,
) -> Arc<FnSignature> {
let (_, node) = func.source(db);
let name = node
.name()

View File

@@ -1,10 +1,12 @@
use crate::{
Crate, CrateDependency, AsName, Module,
db::HirDatabase,
Crate, CrateDependency, AsName, Module, PersistentHirDatabase,
};
impl Crate {
pub(crate) fn dependencies_impl(&self, db: &impl HirDatabase) -> Vec<CrateDependency> {
pub(crate) fn dependencies_impl(
&self,
db: &impl PersistentHirDatabase,
) -> Vec<CrateDependency> {
let crate_graph = db.crate_graph();
crate_graph
.dependencies(self.crate_id)
@@ -17,7 +19,7 @@ impl Crate {
})
.collect()
}
pub(crate) fn root_module_impl(&self, db: &impl HirDatabase) -> Option<Module> {
pub(crate) fn root_module_impl(&self, db: &impl PersistentHirDatabase) -> Option<Module> {
let module_tree = db.module_tree(*self);
let module_id = module_tree.modules().next()?;

View File

@@ -7,7 +7,7 @@ use crate::{
module_tree::ModuleId,
impl_block::ImplId,
nameres::{lower::ImportId},
db::HirDatabase,
HirDatabase, PersistentHirDatabase,
};
impl Module {
@@ -24,7 +24,10 @@ impl Module {
Some(link.name(&module_tree).clone())
}
pub(crate) fn definition_source_impl(&self, db: &impl HirDatabase) -> (FileId, ModuleSource) {
pub(crate) fn definition_source_impl(
&self,
db: &impl PersistentHirDatabase,
) -> (FileId, ModuleSource) {
let module_tree = db.module_tree(self.krate);
let file_id = self.module_id.file_id(&module_tree);
let decl_id = self.module_id.decl_id(&module_tree);
@@ -67,7 +70,7 @@ impl Module {
source_map.get(&source, impl_id)
}
pub(crate) fn crate_root_impl(&self, db: &impl HirDatabase) -> Module {
pub(crate) fn crate_root_impl(&self, db: &impl PersistentHirDatabase) -> Module {
let module_tree = db.module_tree(self.krate);
let module_id = self.module_id.crate_root(&module_tree);
self.with_module_id(module_id)
@@ -81,7 +84,10 @@ impl Module {
}
/// Iterates over all child modules.
pub(crate) fn children_impl(&self, db: &impl HirDatabase) -> impl Iterator<Item = Module> {
pub(crate) fn children_impl(
&self,
db: &impl PersistentHirDatabase,
) -> impl Iterator<Item = Module> {
let module_tree = db.module_tree(self.krate);
let children = self
.module_id
@@ -91,7 +97,7 @@ impl Module {
children.into_iter()
}
pub(crate) fn parent_impl(&self, db: &impl HirDatabase) -> Option<Module> {
pub(crate) fn parent_impl(&self, db: &impl PersistentHirDatabase) -> Option<Module> {
let module_tree = db.module_tree(self.krate);
let parent_id = self.module_id.parent(&module_tree)?;
Some(self.with_module_id(parent_id))