diff options
Diffstat (limited to 'crates/ra_hir/src')
-rw-r--r-- | crates/ra_hir/src/code_model.rs | 48 | ||||
-rw-r--r-- | crates/ra_hir/src/from_source.rs | 6 |
2 files changed, 5 insertions, 49 deletions
diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index e854b22bf..9cbea024a 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs | |||
@@ -158,13 +158,6 @@ impl Module { | |||
158 | self.with_module_id(def_map.root) | 158 | self.with_module_id(def_map.root) |
159 | } | 159 | } |
160 | 160 | ||
161 | /// Finds a child module with the specified name. | ||
162 | pub fn child(self, db: &impl DefDatabase, name: &Name) -> Option<Module> { | ||
163 | let def_map = db.crate_def_map(self.id.krate); | ||
164 | let child_id = def_map[self.id.local_id].children.get(name)?; | ||
165 | Some(self.with_module_id(*child_id)) | ||
166 | } | ||
167 | |||
168 | /// Iterates over all child modules. | 161 | /// Iterates over all child modules. |
169 | pub fn children(self, db: &impl DefDatabase) -> impl Iterator<Item = Module> { | 162 | pub fn children(self, db: &impl DefDatabase) -> impl Iterator<Item = Module> { |
170 | let def_map = db.crate_def_map(self.id.krate); | 163 | let def_map = db.crate_def_map(self.id.krate); |
@@ -238,7 +231,7 @@ impl Module { | |||
238 | def_map[self.id.local_id].impls.iter().copied().map(ImplBlock::from).collect() | 231 | def_map[self.id.local_id].impls.iter().copied().map(ImplBlock::from).collect() |
239 | } | 232 | } |
240 | 233 | ||
241 | fn with_module_id(self, module_id: LocalModuleId) -> Module { | 234 | pub(crate) fn with_module_id(self, module_id: LocalModuleId) -> Module { |
242 | Module::new(self.krate(), module_id) | 235 | Module::new(self.krate(), module_id) |
243 | } | 236 | } |
244 | } | 237 | } |
@@ -303,23 +296,10 @@ impl Struct { | |||
303 | .collect() | 296 | .collect() |
304 | } | 297 | } |
305 | 298 | ||
306 | pub fn field(self, db: &impl HirDatabase, name: &Name) -> Option<StructField> { | ||
307 | db.struct_data(self.id.into()) | ||
308 | .variant_data | ||
309 | .fields() | ||
310 | .iter() | ||
311 | .find(|(_id, data)| data.name == *name) | ||
312 | .map(|(id, _)| StructField { parent: self.into(), id }) | ||
313 | } | ||
314 | |||
315 | pub fn ty(self, db: &impl HirDatabase) -> Type { | 299 | pub fn ty(self, db: &impl HirDatabase) -> Type { |
316 | Type::from_def(db, self.id.module(db).krate, self.id) | 300 | Type::from_def(db, self.id.module(db).krate, self.id) |
317 | } | 301 | } |
318 | 302 | ||
319 | pub fn constructor_ty(self, db: &impl HirDatabase) -> Ty { | ||
320 | db.value_ty(self.id.into()) | ||
321 | } | ||
322 | |||
323 | fn variant_data(self, db: &impl DefDatabase) -> Arc<VariantData> { | 303 | fn variant_data(self, db: &impl DefDatabase) -> Arc<VariantData> { |
324 | db.struct_data(self.id.into()).variant_data.clone() | 304 | db.struct_data(self.id.into()).variant_data.clone() |
325 | } | 305 | } |
@@ -352,15 +332,6 @@ impl Union { | |||
352 | .collect() | 332 | .collect() |
353 | } | 333 | } |
354 | 334 | ||
355 | pub fn field(self, db: &impl HirDatabase, name: &Name) -> Option<StructField> { | ||
356 | db.union_data(self.id) | ||
357 | .variant_data | ||
358 | .fields() | ||
359 | .iter() | ||
360 | .find(|(_id, data)| data.name == *name) | ||
361 | .map(|(id, _)| StructField { parent: self.into(), id }) | ||
362 | } | ||
363 | |||
364 | fn variant_data(self, db: &impl DefDatabase) -> Arc<VariantData> { | 335 | fn variant_data(self, db: &impl DefDatabase) -> Arc<VariantData> { |
365 | db.union_data(self.id).variant_data.clone() | 336 | db.union_data(self.id).variant_data.clone() |
366 | } | 337 | } |
@@ -392,11 +363,6 @@ impl Enum { | |||
392 | .collect() | 363 | .collect() |
393 | } | 364 | } |
394 | 365 | ||
395 | pub fn variant(self, db: &impl DefDatabase, name: &Name) -> Option<EnumVariant> { | ||
396 | let id = db.enum_data(self.id).variant(name)?; | ||
397 | Some(EnumVariant { parent: self, id }) | ||
398 | } | ||
399 | |||
400 | pub fn ty(self, db: &impl HirDatabase) -> Type { | 366 | pub fn ty(self, db: &impl HirDatabase) -> Type { |
401 | Type::from_def(db, self.id.module(db).krate, self.id) | 367 | Type::from_def(db, self.id.module(db).krate, self.id) |
402 | } | 368 | } |
@@ -428,14 +394,6 @@ impl EnumVariant { | |||
428 | .collect() | 394 | .collect() |
429 | } | 395 | } |
430 | 396 | ||
431 | pub fn field(self, db: &impl HirDatabase, name: &Name) -> Option<StructField> { | ||
432 | self.variant_data(db) | ||
433 | .fields() | ||
434 | .iter() | ||
435 | .find(|(_id, data)| data.name == *name) | ||
436 | .map(|(id, _)| StructField { parent: self.into(), id }) | ||
437 | } | ||
438 | |||
439 | pub(crate) fn variant_data(self, db: &impl DefDatabase) -> Arc<VariantData> { | 397 | pub(crate) fn variant_data(self, db: &impl DefDatabase) -> Arc<VariantData> { |
440 | db.enum_data(self.parent.id).variants[self.id].variant_data.clone() | 398 | db.enum_data(self.parent.id).variants[self.id].variant_data.clone() |
441 | } | 399 | } |
@@ -561,10 +519,6 @@ impl Function { | |||
561 | db.body(self.id.into()) | 519 | db.body(self.id.into()) |
562 | } | 520 | } |
563 | 521 | ||
564 | pub fn ty(self, db: &impl HirDatabase) -> Ty { | ||
565 | db.value_ty(self.id.into()) | ||
566 | } | ||
567 | |||
568 | pub fn infer(self, db: &impl HirDatabase) -> Arc<InferenceResult> { | 522 | pub fn infer(self, db: &impl HirDatabase) -> Arc<InferenceResult> { |
569 | db.infer(self.id.into()) | 523 | db.infer(self.id.into()) |
570 | } | 524 | } |
diff --git a/crates/ra_hir/src/from_source.rs b/crates/ra_hir/src/from_source.rs index 071ca2e5a..307f3d5bf 100644 --- a/crates/ra_hir/src/from_source.rs +++ b/crates/ra_hir/src/from_source.rs | |||
@@ -216,8 +216,10 @@ impl Module { | |||
216 | } | 216 | } |
217 | }?; | 217 | }?; |
218 | 218 | ||
219 | let child_name = src.value.name()?; | 219 | let child_name = src.value.name()?.as_name(); |
220 | parent_module.child(db, &child_name.as_name()) | 220 | let def_map = db.crate_def_map(parent_module.id.krate); |
221 | let child_id = def_map[parent_module.id.local_id].children.get(&child_name)?; | ||
222 | Some(parent_module.with_module_id(*child_id)) | ||
221 | } | 223 | } |
222 | 224 | ||
223 | pub fn from_definition(db: &impl DefDatabase, src: InFile<ModuleSource>) -> Option<Self> { | 225 | pub fn from_definition(db: &impl DefDatabase, src: InFile<ModuleSource>) -> Option<Self> { |