diff options
Diffstat (limited to 'crates/hir_def/src/item_scope.rs')
-rw-r--r-- | crates/hir_def/src/item_scope.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/crates/hir_def/src/item_scope.rs b/crates/hir_def/src/item_scope.rs index 62ab3b2bd..4da1c3ab0 100644 --- a/crates/hir_def/src/item_scope.rs +++ b/crates/hir_def/src/item_scope.rs | |||
@@ -10,11 +10,11 @@ use once_cell::sync::Lazy; | |||
10 | use rustc_hash::{FxHashMap, FxHashSet}; | 10 | use rustc_hash::{FxHashMap, FxHashSet}; |
11 | use test_utils::mark; | 11 | use test_utils::mark; |
12 | 12 | ||
13 | use crate::ModuleId; | ||
14 | use crate::{ | 13 | use crate::{ |
15 | db::DefDatabase, per_ns::PerNs, visibility::Visibility, AdtId, BuiltinType, HasModule, ImplId, | 14 | db::DefDatabase, per_ns::PerNs, visibility::Visibility, AdtId, BuiltinType, HasModule, ImplId, |
16 | LocalModuleId, Lookup, MacroDefId, ModuleDefId, TraitId, | 15 | LocalModuleId, Lookup, MacroDefId, ModuleDefId, TraitId, |
17 | }; | 16 | }; |
17 | use crate::{AssocItemId, ModuleId}; | ||
18 | 18 | ||
19 | #[derive(Copy, Clone)] | 19 | #[derive(Copy, Clone)] |
20 | pub(crate) enum ImportType { | 20 | pub(crate) enum ImportType { |
@@ -349,6 +349,18 @@ impl ItemInNs { | |||
349 | } | 349 | } |
350 | } | 350 | } |
351 | 351 | ||
352 | pub fn as_assoc_item_id(self) -> Option<AssocItemId> { | ||
353 | match self { | ||
354 | ItemInNs::Types(ModuleDefId::FunctionId(id)) | ||
355 | | ItemInNs::Values(ModuleDefId::FunctionId(id)) => Some(id.into()), | ||
356 | ItemInNs::Types(ModuleDefId::ConstId(id)) | ||
357 | | ItemInNs::Values(ModuleDefId::ConstId(id)) => Some(id.into()), | ||
358 | ItemInNs::Types(ModuleDefId::TypeAliasId(id)) | ||
359 | | ItemInNs::Values(ModuleDefId::TypeAliasId(id)) => Some(id.into()), | ||
360 | _ => None, | ||
361 | } | ||
362 | } | ||
363 | |||
352 | /// Returns the crate defining this item (or `None` if `self` is built-in). | 364 | /// Returns the crate defining this item (or `None` if `self` is built-in). |
353 | pub fn krate(&self, db: &dyn DefDatabase) -> Option<CrateId> { | 365 | pub fn krate(&self, db: &dyn DefDatabase) -> Option<CrateId> { |
354 | Some(match self { | 366 | Some(match self { |