diff options
Diffstat (limited to 'crates/ra_hir/src/code_model.rs')
-rw-r--r-- | crates/ra_hir/src/code_model.rs | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index 1a790b2f3..de1377aa4 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs | |||
@@ -6,7 +6,7 @@ pub(crate) mod docs; | |||
6 | use std::sync::Arc; | 6 | use std::sync::Arc; |
7 | 7 | ||
8 | use hir_def::{CrateModuleId, ModuleId}; | 8 | use hir_def::{CrateModuleId, ModuleId}; |
9 | use ra_db::{CrateId, Edition, FileId}; | 9 | use ra_db::{CrateId, Edition}; |
10 | use ra_syntax::ast::{self, NameOwner, TypeAscriptionOwner}; | 10 | use ra_syntax::ast::{self, NameOwner, TypeAscriptionOwner}; |
11 | 11 | ||
12 | use crate::{ | 12 | use crate::{ |
@@ -33,7 +33,7 @@ use crate::{ | |||
33 | }, | 33 | }, |
34 | type_ref::Mutability, | 34 | type_ref::Mutability, |
35 | type_ref::TypeRef, | 35 | type_ref::TypeRef, |
36 | AsName, AstId, Either, HasSource, Name, Ty, | 36 | AsName, Either, HasSource, Name, Ty, |
37 | }; | 37 | }; |
38 | 38 | ||
39 | /// hir::Crate describes a single crate. It's the main interface with which | 39 | /// hir::Crate describes a single crate. It's the main interface with which |
@@ -147,31 +147,7 @@ impl_froms!( | |||
147 | BuiltinType | 147 | BuiltinType |
148 | ); | 148 | ); |
149 | 149 | ||
150 | pub enum ModuleSource { | 150 | pub use hir_def::ModuleSource; |
151 | SourceFile(ast::SourceFile), | ||
152 | Module(ast::Module), | ||
153 | } | ||
154 | |||
155 | impl ModuleSource { | ||
156 | pub(crate) fn new( | ||
157 | db: &(impl DefDatabase + AstDatabase), | ||
158 | file_id: Option<FileId>, | ||
159 | decl_id: Option<AstId<ast::Module>>, | ||
160 | ) -> ModuleSource { | ||
161 | match (file_id, decl_id) { | ||
162 | (Some(file_id), _) => { | ||
163 | let source_file = db.parse(file_id).tree(); | ||
164 | ModuleSource::SourceFile(source_file) | ||
165 | } | ||
166 | (None, Some(item_id)) => { | ||
167 | let module = item_id.to_node(db); | ||
168 | assert!(module.item_list().is_some(), "expected inline module"); | ||
169 | ModuleSource::Module(module) | ||
170 | } | ||
171 | (None, None) => panic!(), | ||
172 | } | ||
173 | } | ||
174 | } | ||
175 | 151 | ||
176 | impl Module { | 152 | impl Module { |
177 | pub(crate) fn new(krate: Crate, crate_module_id: CrateModuleId) -> Module { | 153 | pub(crate) fn new(krate: Crate, crate_module_id: CrateModuleId) -> Module { |