aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir_def/src/lib.rs')
-rw-r--r--crates/ra_hir_def/src/lib.rs22
1 files changed, 18 insertions, 4 deletions
diff --git a/crates/ra_hir_def/src/lib.rs b/crates/ra_hir_def/src/lib.rs
index 3d42762ae..5e46db1aa 100644
--- a/crates/ra_hir_def/src/lib.rs
+++ b/crates/ra_hir_def/src/lib.rs
@@ -331,12 +331,18 @@ pub struct LocalTypeParamId(RawId);
331impl_arena_id!(LocalTypeParamId); 331impl_arena_id!(LocalTypeParamId);
332 332
333#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 333#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
334pub enum AssocContainerId { 334pub enum ContainerId {
335 ModuleId(ModuleId), 335 ModuleId(ModuleId),
336 DefWithBodyId(DefWithBodyId),
337}
338
339#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
340pub enum AssocContainerId {
341 ContainerId(ContainerId),
336 ImplId(ImplId), 342 ImplId(ImplId),
337 TraitId(TraitId), 343 TraitId(TraitId),
338 DefWithBodyId(DefWithBodyId),
339} 344}
345impl_froms!(AssocContainerId: ContainerId);
340 346
341/// A Data Type 347/// A Data Type
342#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] 348#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
@@ -479,13 +485,21 @@ pub trait HasModule {
479 fn module(&self, db: &impl db::DefDatabase) -> ModuleId; 485 fn module(&self, db: &impl db::DefDatabase) -> ModuleId;
480} 486}
481 487
488impl HasModule for ContainerId {
489 fn module(&self, db: &impl db::DefDatabase) -> ModuleId {
490 match *self {
491 ContainerId::ModuleId(it) => it,
492 ContainerId::DefWithBodyId(it) => it.module(db),
493 }
494 }
495}
496
482impl HasModule for AssocContainerId { 497impl HasModule for AssocContainerId {
483 fn module(&self, db: &impl db::DefDatabase) -> ModuleId { 498 fn module(&self, db: &impl db::DefDatabase) -> ModuleId {
484 match *self { 499 match *self {
485 AssocContainerId::ModuleId(it) => it, 500 AssocContainerId::ContainerId(it) => it.module(db),
486 AssocContainerId::ImplId(it) => it.lookup(db).container, 501 AssocContainerId::ImplId(it) => it.lookup(db).container,
487 AssocContainerId::TraitId(it) => it.lookup(db).container, 502 AssocContainerId::TraitId(it) => it.lookup(db).container,
488 AssocContainerId::DefWithBodyId(it) => it.module(db),
489 } 503 }
490 } 504 }
491} 505}