From 59e29aef633e906837f8fed604435976a46be691 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 28 Nov 2018 04:09:44 +0300 Subject: Move hir to a separate crate --- crates/ra_hir/src/module/mod.rs | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) (limited to 'crates/ra_hir/src/module/mod.rs') diff --git a/crates/ra_hir/src/module/mod.rs b/crates/ra_hir/src/module/mod.rs index 81b9f948d..a011fd53e 100644 --- a/crates/ra_hir/src/module/mod.rs +++ b/crates/ra_hir/src/module/mod.rs @@ -18,15 +18,16 @@ use crate::{ arena::{Arena, Id}, }; -pub(crate) use self::nameres::ModuleScope; +pub use self::nameres::ModuleScope; /// `Module` is API entry point to get all the information /// about a particular module. #[derive(Debug, Clone)] -pub(crate) struct Module { +pub struct Module { tree: Arc, source_root_id: SourceRootId, - module_id: ModuleId, + //TODO: make private + pub module_id: ModuleId, } impl Module { @@ -145,17 +146,13 @@ impl Module { } /// Returns a `ModuleScope`: a set of items, visible in this module. - pub(crate) fn scope(&self, db: &impl HirDatabase) -> Cancelable { + pub fn scope(&self, db: &impl HirDatabase) -> Cancelable { let item_map = db.item_map(self.source_root_id)?; let res = item_map.per_module[&self.module_id].clone(); Ok(res) } - pub(crate) fn resolve_path( - &self, - db: &impl HirDatabase, - path: Path, - ) -> Cancelable> { + pub fn resolve_path(&self, db: &impl HirDatabase, path: Path) -> Cancelable> { let mut curr = match path.kind { PathKind::Crate => self.crate_root(), PathKind::Self_ | PathKind::Plain => self.clone(), @@ -188,7 +185,7 @@ impl Module { /// (which can have multiple parents) to the precise world of modules (which /// always have one parent). #[derive(Default, Debug, PartialEq, Eq)] -pub(crate) struct ModuleTree { +pub struct ModuleTree { mods: Arena, links: Arena, } @@ -214,19 +211,19 @@ impl ModuleTree { /// `ModuleSource` is the syntax tree element that produced this module: /// either a file, or an inlinde module. #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] -pub(crate) enum ModuleSource { +pub enum ModuleSource { SourceFile(FileId), Module(SourceItemId), } /// An owned syntax node for a module. Unlike `ModuleSource`, /// this holds onto the AST for the whole file. -pub(crate) enum ModuleSourceNode { +pub enum ModuleSourceNode { SourceFile(ast::SourceFileNode), Module(ast::ModuleNode), } -pub(crate) type ModuleId = Id; +pub type ModuleId = Id; type LinkId = Id; #[derive(Clone, Debug, Hash, PartialEq, Eq)] @@ -308,7 +305,7 @@ impl LinkId { } #[derive(Debug, PartialEq, Eq, Hash)] -pub(crate) struct ModuleData { +pub struct ModuleData { source: ModuleSource, parent: Option, children: Vec, @@ -327,21 +324,21 @@ impl ModuleSource { ModuleSource::Module(id) } - pub(crate) fn as_file(self) -> Option { + pub fn as_file(self) -> Option { match self { ModuleSource::SourceFile(f) => Some(f), ModuleSource::Module(..) => None, } } - pub(crate) fn file_id(self) -> FileId { + pub fn file_id(self) -> FileId { match self { ModuleSource::SourceFile(f) => f, ModuleSource::Module(source_item_id) => source_item_id.file_id, } } - pub(crate) fn resolve(self, db: &impl HirDatabase) -> ModuleSourceNode { + pub fn resolve(self, db: &impl HirDatabase) -> ModuleSourceNode { match self { ModuleSource::SourceFile(file_id) => { let syntax = db.source_file(file_id); -- cgit v1.2.3