submodules works with module sources
This commit is contained in:
parent
88a15d10d5
commit
e0b21b9899
@ -11,7 +11,7 @@ use ra_syntax::{
|
||||
use crate::{
|
||||
db::SyntaxDatabase,
|
||||
descriptors::function::{resolve_local_name, FnId, FnScopes},
|
||||
descriptors::module::{ModuleId, ModuleScope, ModuleTree},
|
||||
descriptors::module::{ModuleId, ModuleScope, ModuleTree, ModuleSource},
|
||||
input::SourceRootId,
|
||||
syntax_ptr::LocalSyntaxPtr,
|
||||
Cancelable, FileId,
|
||||
@ -23,7 +23,7 @@ salsa::query_group! {
|
||||
type ModuleTreeQuery;
|
||||
use fn module::imp::module_tree;
|
||||
}
|
||||
fn submodules(file_id: FileId) -> Cancelable<Arc<Vec<SmolStr>>> {
|
||||
fn submodules(source: ModuleSource) -> Cancelable<Arc<Vec<module::imp::Submodule>>> {
|
||||
type SubmodulesQuery;
|
||||
use fn module::imp::submodules;
|
||||
}
|
||||
|
@ -19,14 +19,25 @@ use super::{
|
||||
ModuleTree, Problem,
|
||||
};
|
||||
|
||||
#[derive(Clone, Hash, PartialEq, Eq, Debug)]
|
||||
pub(crate) struct Submodule {
|
||||
name: SmolStr
|
||||
}
|
||||
|
||||
pub(crate) fn submodules(
|
||||
db: &impl DescriptorDatabase,
|
||||
file_id: FileId,
|
||||
) -> Cancelable<Arc<Vec<SmolStr>>> {
|
||||
source: ModuleSource,
|
||||
) -> Cancelable<Arc<Vec<Submodule>>> {
|
||||
db::check_canceled(db)?;
|
||||
let file_id = match source {
|
||||
ModuleSource::File(it) => it,
|
||||
_ => unimplemented!(),
|
||||
};
|
||||
let file = db.file_syntax(file_id);
|
||||
let root = file.ast();
|
||||
let submodules = modules(root).map(|(name, _)| name).collect();
|
||||
let submodules = modules(root)
|
||||
.map(|(name, _)| Submodule { name })
|
||||
.collect();
|
||||
Ok(Arc::new(submodules))
|
||||
}
|
||||
|
||||
@ -66,11 +77,6 @@ pub(crate) fn module_tree(
|
||||
Ok(Arc::new(res))
|
||||
}
|
||||
|
||||
#[derive(Clone, Hash, PartialEq, Eq, Debug)]
|
||||
pub struct Submodule {
|
||||
pub name: SmolStr,
|
||||
}
|
||||
|
||||
fn create_module_tree<'a>(
|
||||
db: &impl DescriptorDatabase,
|
||||
source_root: SourceRootId,
|
||||
@ -118,10 +124,11 @@ fn build_subtree(
|
||||
parent,
|
||||
children: Vec::new(),
|
||||
});
|
||||
for name in db.submodules(file_id)?.iter() {
|
||||
let (points_to, problem) = resolve_submodule(file_id, name, &source_root.file_resolver);
|
||||
for sub in db.submodules(ModuleSource::File(file_id))?.iter() {
|
||||
let name = sub.name.clone();
|
||||
let (points_to, problem) = resolve_submodule(file_id, &name, &source_root.file_resolver);
|
||||
let link = tree.push_link(LinkData {
|
||||
name: name.clone(),
|
||||
name,
|
||||
owner: id,
|
||||
points_to: Vec::new(),
|
||||
problem: None,
|
||||
|
Loading…
x
Reference in New Issue
Block a user