From 6f4d5f7339395d854e4ba2af227de851246e528f Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 31 Oct 2019 10:31:29 +0300 Subject: [PATCH] move mod_resolution to hir_def --- crates/ra_hir/src/nameres.rs | 1 - crates/ra_hir/src/nameres/collector.rs | 9 ++++++--- crates/ra_hir_def/src/nameres.rs | 2 ++ .../src/nameres/mod_resolution.rs | 17 +++++++---------- 4 files changed, 15 insertions(+), 14 deletions(-) rename crates/{ra_hir => ra_hir_def}/src/nameres/mod_resolution.rs (88%) diff --git a/crates/ra_hir/src/nameres.rs b/crates/ra_hir/src/nameres.rs index 39f585b446a..7c4d07de0da 100644 --- a/crates/ra_hir/src/nameres.rs +++ b/crates/ra_hir/src/nameres.rs @@ -49,7 +49,6 @@ mod per_ns; mod collector; -mod mod_resolution; #[cfg(test)] mod tests; diff --git a/crates/ra_hir/src/nameres/collector.rs b/crates/ra_hir/src/nameres/collector.rs index e2e13805acc..ee0a4c99fe0 100644 --- a/crates/ra_hir/src/nameres/collector.rs +++ b/crates/ra_hir/src/nameres/collector.rs @@ -1,6 +1,9 @@ //! FIXME: write short doc here -use hir_def::{attr::Attr, nameres::raw}; +use hir_def::{ + attr::Attr, + nameres::{mod_resolution::ModDir, raw}, +}; use hir_expand::name; use ra_cfg::CfgOptions; use ra_db::FileId; @@ -12,8 +15,8 @@ use crate::{ db::DefDatabase, ids::{AstItemDef, LocationCtx, MacroCallId, MacroCallLoc, MacroDefId, MacroFileKind}, nameres::{ - diagnostics::DefDiagnostic, mod_resolution::ModDir, Crate, CrateDefMap, CrateModuleId, - ModuleData, ModuleDef, PerNs, ReachedFixedPoint, Resolution, ResolveMode, + diagnostics::DefDiagnostic, Crate, CrateDefMap, CrateModuleId, ModuleData, ModuleDef, + PerNs, ReachedFixedPoint, Resolution, ResolveMode, }, Adt, AstId, Const, Enum, Function, HirFileId, MacroDef, Module, Name, Path, PathKind, Static, Struct, Trait, TypeAlias, Union, diff --git a/crates/ra_hir_def/src/nameres.rs b/crates/ra_hir_def/src/nameres.rs index 5893708e8ba..11ba8a7770d 100644 --- a/crates/ra_hir_def/src/nameres.rs +++ b/crates/ra_hir_def/src/nameres.rs @@ -1,3 +1,5 @@ //! FIXME: write short doc here +// FIXME: review privacy of submodules pub mod raw; +pub mod mod_resolution; diff --git a/crates/ra_hir/src/nameres/mod_resolution.rs b/crates/ra_hir_def/src/nameres/mod_resolution.rs similarity index 88% rename from crates/ra_hir/src/nameres/mod_resolution.rs rename to crates/ra_hir_def/src/nameres/mod_resolution.rs index 334cdd692ac..7d7e2779aa2 100644 --- a/crates/ra_hir/src/nameres/mod_resolution.rs +++ b/crates/ra_hir_def/src/nameres/mod_resolution.rs @@ -1,12 +1,13 @@ //! This module resolves `mod foo;` declaration to file. +use hir_expand::name::Name; use ra_db::FileId; use ra_syntax::SmolStr; use relative_path::RelativePathBuf; -use crate::{db::DefDatabase, HirFileId, Name}; +use crate::{db::DefDatabase2, HirFileId}; #[derive(Clone, Debug)] -pub(super) struct ModDir { +pub struct ModDir { /// `.` for `mod.rs`, `lib.rs` /// `./foo` for `foo.rs` /// `./foo/bar` for `mod bar { mod x; }` nested in `foo.rs` @@ -16,15 +17,11 @@ pub(super) struct ModDir { } impl ModDir { - pub(super) fn root() -> ModDir { + pub fn root() -> ModDir { ModDir { path: RelativePathBuf::default(), root_non_dir_owner: false } } - pub(super) fn descend_into_definition( - &self, - name: &Name, - attr_path: Option<&SmolStr>, - ) -> ModDir { + pub fn descend_into_definition(&self, name: &Name, attr_path: Option<&SmolStr>) -> ModDir { let mut path = self.path.clone(); match attr_to_path(attr_path) { None => path.push(&name.to_string()), @@ -38,9 +35,9 @@ impl ModDir { ModDir { path, root_non_dir_owner: false } } - pub(super) fn resolve_declaration( + pub fn resolve_declaration( &self, - db: &impl DefDatabase, + db: &impl DefDatabase2, file_id: HirFileId, name: &Name, attr_path: Option<&SmolStr>,