aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_def/src/item_scope.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/hir_def/src/item_scope.rs')
-rw-r--r--crates/hir_def/src/item_scope.rs14
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;
10use rustc_hash::{FxHashMap, FxHashSet}; 10use rustc_hash::{FxHashMap, FxHashSet};
11use test_utils::mark; 11use test_utils::mark;
12 12
13use crate::ModuleId;
14use crate::{ 13use 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};
17use crate::{AssocItemId, ModuleId};
18 18
19#[derive(Copy, Clone)] 19#[derive(Copy, Clone)]
20pub(crate) enum ImportType { 20pub(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 {