aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-11-23 13:49:05 +0000
committerAleksey Kladov <[email protected]>2019-11-23 13:49:05 +0000
commitdd5c2dc5bf9e9dee863bd79105b1782b654221f7 (patch)
tree85d06e13d0ba19d0e9e855ad013219ba0308e725
parent338ff052c2fe658d6fcf88888918b2e372129e21 (diff)
Move ImportId
-rw-r--r--crates/ra_hir/src/code_model.rs8
-rw-r--r--crates/ra_hir_def/src/lib.rs4
-rw-r--r--crates/ra_hir_def/src/nameres.rs8
-rw-r--r--crates/ra_hir_def/src/nameres/collector.rs14
-rw-r--r--crates/ra_hir_def/src/nameres/raw.rs20
5 files changed, 26 insertions, 28 deletions
diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs
index 50c9a79fc..07c56843a 100644
--- a/crates/ra_hir/src/code_model.rs
+++ b/crates/ra_hir/src/code_model.rs
@@ -9,11 +9,11 @@ use hir_def::{
9 body::scope::ExprScopes, 9 body::scope::ExprScopes,
10 builtin_type::BuiltinType, 10 builtin_type::BuiltinType,
11 docs::Documentation, 11 docs::Documentation,
12 nameres::{per_ns::PerNs, raw::ImportId}, 12 nameres::per_ns::PerNs,
13 resolver::{HasResolver, TypeNs}, 13 resolver::{HasResolver, TypeNs},
14 type_ref::TypeRef, 14 type_ref::TypeRef,
15 ContainerId, CrateModuleId, HasModule, ImplId, LocalEnumVariantId, LocalStructFieldId, Lookup, 15 ContainerId, CrateModuleId, HasModule, ImplId, LocalEnumVariantId, LocalImportId,
16 ModuleId, UnionId, 16 LocalStructFieldId, Lookup, ModuleId, UnionId,
17}; 17};
18use hir_expand::{ 18use hir_expand::{
19 diagnostics::DiagnosticSink, 19 diagnostics::DiagnosticSink,
@@ -229,7 +229,7 @@ impl Module {
229 229
230pub struct Import { 230pub struct Import {
231 pub(crate) parent: Module, 231 pub(crate) parent: Module,
232 pub(crate) id: ImportId, 232 pub(crate) id: LocalImportId,
233} 233}
234 234
235#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 235#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
diff --git a/crates/ra_hir_def/src/lib.rs b/crates/ra_hir_def/src/lib.rs
index 1b2bc6f45..b74038b50 100644
--- a/crates/ra_hir_def/src/lib.rs
+++ b/crates/ra_hir_def/src/lib.rs
@@ -100,6 +100,10 @@ impl ModuleSource {
100} 100}
101 101
102#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 102#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
103pub struct LocalImportId(RawId);
104impl_arena_id!(LocalImportId);
105
106#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
103pub struct ModuleId { 107pub struct ModuleId {
104 pub krate: CrateId, 108 pub krate: CrateId,
105 pub module_id: CrateModuleId, 109 pub module_id: CrateModuleId,
diff --git a/crates/ra_hir_def/src/nameres.rs b/crates/ra_hir_def/src/nameres.rs
index 101203b7b..0b3b60a37 100644
--- a/crates/ra_hir_def/src/nameres.rs
+++ b/crates/ra_hir_def/src/nameres.rs
@@ -72,11 +72,9 @@ use rustc_hash::{FxHashMap, FxHashSet};
72use crate::{ 72use crate::{
73 builtin_type::BuiltinType, 73 builtin_type::BuiltinType,
74 db::DefDatabase, 74 db::DefDatabase,
75 nameres::{ 75 nameres::{diagnostics::DefDiagnostic, path_resolution::ResolveMode, per_ns::PerNs},
76 diagnostics::DefDiagnostic, path_resolution::ResolveMode, per_ns::PerNs, raw::ImportId,
77 },
78 path::Path, 76 path::Path,
79 AstId, CrateModuleId, FunctionId, ImplId, ModuleDefId, ModuleId, TraitId, 77 AstId, CrateModuleId, FunctionId, ImplId, LocalImportId, ModuleDefId, ModuleId, TraitId,
80}; 78};
81 79
82/// Contains all top-level defs from a macro-expanded crate 80/// Contains all top-level defs from a macro-expanded crate
@@ -213,7 +211,7 @@ pub struct Resolution {
213 /// None for unresolved 211 /// None for unresolved
214 pub def: PerNs, 212 pub def: PerNs,
215 /// ident by which this is imported into local scope. 213 /// ident by which this is imported into local scope.
216 pub import: Option<ImportId>, 214 pub import: Option<LocalImportId>,
217} 215}
218 216
219impl CrateDefMap { 217impl CrateDefMap {
diff --git a/crates/ra_hir_def/src/nameres/collector.rs b/crates/ra_hir_def/src/nameres/collector.rs
index 1894b072a..4a671b8f3 100644
--- a/crates/ra_hir_def/src/nameres/collector.rs
+++ b/crates/ra_hir_def/src/nameres/collector.rs
@@ -20,8 +20,8 @@ use crate::{
20 }, 20 },
21 path::{Path, PathKind}, 21 path::{Path, PathKind},
22 AdtId, AstId, AstItemDef, ConstLoc, ContainerId, CrateModuleId, EnumId, EnumVariantId, 22 AdtId, AstId, AstItemDef, ConstLoc, ContainerId, CrateModuleId, EnumId, EnumVariantId,
23 FunctionLoc, ImplId, Intern, LocationCtx, ModuleDefId, ModuleId, StaticId, StructId, 23 FunctionLoc, ImplId, Intern, LocalImportId, LocationCtx, ModuleDefId, ModuleId, StaticId,
24 StructOrUnionId, TraitId, TypeAliasLoc, UnionId, 24 StructId, StructOrUnionId, TraitId, TypeAliasLoc, UnionId,
25}; 25};
26 26
27pub(super) fn collect_defs(db: &impl DefDatabase, mut def_map: CrateDefMap) -> CrateDefMap { 27pub(super) fn collect_defs(db: &impl DefDatabase, mut def_map: CrateDefMap) -> CrateDefMap {
@@ -94,8 +94,8 @@ impl MacroStackMonitor {
94struct DefCollector<'a, DB> { 94struct DefCollector<'a, DB> {
95 db: &'a DB, 95 db: &'a DB,
96 def_map: CrateDefMap, 96 def_map: CrateDefMap,
97 glob_imports: FxHashMap<CrateModuleId, Vec<(CrateModuleId, raw::ImportId)>>, 97 glob_imports: FxHashMap<CrateModuleId, Vec<(CrateModuleId, LocalImportId)>>,
98 unresolved_imports: Vec<(CrateModuleId, raw::ImportId, raw::ImportData)>, 98 unresolved_imports: Vec<(CrateModuleId, LocalImportId, raw::ImportData)>,
99 unexpanded_macros: Vec<(CrateModuleId, AstId<ast::MacroCall>, Path)>, 99 unexpanded_macros: Vec<(CrateModuleId, AstId<ast::MacroCall>, Path)>,
100 mod_dirs: FxHashMap<CrateModuleId, ModDir>, 100 mod_dirs: FxHashMap<CrateModuleId, ModDir>,
101 101
@@ -293,7 +293,7 @@ where
293 &mut self, 293 &mut self,
294 module_id: CrateModuleId, 294 module_id: CrateModuleId,
295 def: PerNs, 295 def: PerNs,
296 import_id: raw::ImportId, 296 import_id: LocalImportId,
297 import: &raw::ImportData, 297 import: &raw::ImportData,
298 ) { 298 ) {
299 if import.is_glob { 299 if import.is_glob {
@@ -388,7 +388,7 @@ where
388 fn update( 388 fn update(
389 &mut self, 389 &mut self,
390 module_id: CrateModuleId, 390 module_id: CrateModuleId,
391 import: Option<raw::ImportId>, 391 import: Option<LocalImportId>,
392 resolutions: &[(Name, Resolution)], 392 resolutions: &[(Name, Resolution)],
393 ) { 393 ) {
394 self.update_recursive(module_id, import, resolutions, 0) 394 self.update_recursive(module_id, import, resolutions, 0)
@@ -397,7 +397,7 @@ where
397 fn update_recursive( 397 fn update_recursive(
398 &mut self, 398 &mut self,
399 module_id: CrateModuleId, 399 module_id: CrateModuleId,
400 import: Option<raw::ImportId>, 400 import: Option<LocalImportId>,
401 resolutions: &[(Name, Resolution)], 401 resolutions: &[(Name, Resolution)],
402 depth: usize, 402 depth: usize,
403 ) { 403 ) {
diff --git a/crates/ra_hir_def/src/nameres/raw.rs b/crates/ra_hir_def/src/nameres/raw.rs
index 7618cb059..8ee6f54cd 100644
--- a/crates/ra_hir_def/src/nameres/raw.rs
+++ b/crates/ra_hir_def/src/nameres/raw.rs
@@ -20,7 +20,7 @@ use crate::{
20 attr::{Attr, Attrs}, 20 attr::{Attr, Attrs},
21 db::DefDatabase, 21 db::DefDatabase,
22 path::Path, 22 path::Path,
23 FileAstId, HirFileId, ModuleSource, Source, 23 FileAstId, HirFileId, LocalImportId, ModuleSource, Source,
24}; 24};
25 25
26/// `RawItems` is a set of top-level items in a file (except for impls). 26/// `RawItems` is a set of top-level items in a file (except for impls).
@@ -30,7 +30,7 @@ use crate::{
30#[derive(Debug, Default, PartialEq, Eq)] 30#[derive(Debug, Default, PartialEq, Eq)]
31pub struct RawItems { 31pub struct RawItems {
32 modules: Arena<Module, ModuleData>, 32 modules: Arena<Module, ModuleData>,
33 imports: Arena<ImportId, ImportData>, 33 imports: Arena<LocalImportId, ImportData>,
34 defs: Arena<Def, DefData>, 34 defs: Arena<Def, DefData>,
35 macros: Arena<Macro, MacroData>, 35 macros: Arena<Macro, MacroData>,
36 impls: Arena<Impl, ImplData>, 36 impls: Arena<Impl, ImplData>,
@@ -40,7 +40,7 @@ pub struct RawItems {
40 40
41#[derive(Debug, Default, PartialEq, Eq)] 41#[derive(Debug, Default, PartialEq, Eq)]
42pub struct ImportSourceMap { 42pub struct ImportSourceMap {
43 map: ArenaMap<ImportId, ImportSourcePtr>, 43 map: ArenaMap<LocalImportId, ImportSourcePtr>,
44} 44}
45 45
46type ImportSourcePtr = Either<AstPtr<ast::UseTree>, AstPtr<ast::ExternCrateItem>>; 46type ImportSourcePtr = Either<AstPtr<ast::UseTree>, AstPtr<ast::ExternCrateItem>>;
@@ -51,11 +51,11 @@ fn to_node(ptr: ImportSourcePtr, file: &SourceFile) -> ImportSource {
51} 51}
52 52
53impl ImportSourceMap { 53impl ImportSourceMap {
54 fn insert(&mut self, import: ImportId, ptr: ImportSourcePtr) { 54 fn insert(&mut self, import: LocalImportId, ptr: ImportSourcePtr) {
55 self.map.insert(import, ptr) 55 self.map.insert(import, ptr)
56 } 56 }
57 57
58 pub fn get(&self, source: &ModuleSource, import: ImportId) -> ImportSource { 58 pub fn get(&self, source: &ModuleSource, import: LocalImportId) -> ImportSource {
59 let file = match source { 59 let file = match source {
60 ModuleSource::SourceFile(file) => file.clone(), 60 ModuleSource::SourceFile(file) => file.clone(),
61 ModuleSource::Module(m) => m.syntax().ancestors().find_map(SourceFile::cast).unwrap(), 61 ModuleSource::Module(m) => m.syntax().ancestors().find_map(SourceFile::cast).unwrap(),
@@ -106,9 +106,9 @@ impl Index<Module> for RawItems {
106 } 106 }
107} 107}
108 108
109impl Index<ImportId> for RawItems { 109impl Index<LocalImportId> for RawItems {
110 type Output = ImportData; 110 type Output = ImportData;
111 fn index(&self, idx: ImportId) -> &ImportData { 111 fn index(&self, idx: LocalImportId) -> &ImportData {
112 &self.imports[idx] 112 &self.imports[idx]
113 } 113 }
114} 114}
@@ -143,7 +143,7 @@ pub(super) struct RawItem {
143#[derive(Debug, PartialEq, Eq, Clone, Copy)] 143#[derive(Debug, PartialEq, Eq, Clone, Copy)]
144pub(super) enum RawItemKind { 144pub(super) enum RawItemKind {
145 Module(Module), 145 Module(Module),
146 Import(ImportId), 146 Import(LocalImportId),
147 Def(Def), 147 Def(Def),
148 Macro(Macro), 148 Macro(Macro),
149 Impl(Impl), 149 Impl(Impl),
@@ -159,10 +159,6 @@ pub(super) enum ModuleData {
159 Definition { name: Name, ast_id: FileAstId<ast::Module>, items: Vec<RawItem> }, 159 Definition { name: Name, ast_id: FileAstId<ast::Module>, items: Vec<RawItem> },
160} 160}
161 161
162#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
163pub struct ImportId(RawId);
164impl_arena_id!(ImportId);
165
166#[derive(Debug, Clone, PartialEq, Eq)] 162#[derive(Debug, Clone, PartialEq, Eq)]
167pub struct ImportData { 163pub struct ImportData {
168 pub(super) path: Path, 164 pub(super) path: Path,