From 82e9b245587046d2a1ed432225b19023adbe3245 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 12 Dec 2019 14:34:03 +0100 Subject: Move traits to the new loc --- crates/ra_hir_def/src/lib.rs | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'crates/ra_hir_def/src/lib.rs') diff --git a/crates/ra_hir_def/src/lib.rs b/crates/ra_hir_def/src/lib.rs index 5564b166b..0fcc2cde4 100644 --- a/crates/ra_hir_def/src/lib.rs +++ b/crates/ra_hir_def/src/lib.rs @@ -253,12 +253,24 @@ impl Lookup for StaticId { #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct TraitId(salsa::InternId); impl_intern_key!(TraitId); -impl AstItemDef for TraitId { - fn intern(db: &impl InternDatabase, loc: ItemLoc) -> Self { - db.intern_trait(loc) + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct TraitLoc { + pub container: ModuleId, + pub ast_id: AstId, +} + +impl Intern for TraitLoc { + type ID = TraitId; + fn intern(self, db: &impl db::DefDatabase) -> TraitId { + db.intern_trait(self) } - fn lookup_intern(self, db: &impl InternDatabase) -> ItemLoc { - db.lookup_intern_trait(self) +} + +impl Lookup for TraitId { + type Data = TraitLoc; + fn lookup(&self, db: &impl db::DefDatabase) -> TraitLoc { + db.lookup_intern_trait(*self) } } @@ -492,7 +504,7 @@ impl HasModule for FunctionLoc { match self.container { ContainerId::ModuleId(it) => it, ContainerId::ImplId(it) => it.lookup(db).container, - ContainerId::TraitId(it) => it.module(db), + ContainerId::TraitId(it) => it.lookup(db).container, } } } @@ -502,7 +514,7 @@ impl HasModule for TypeAliasLoc { match self.container { ContainerId::ModuleId(it) => it, ContainerId::ImplId(it) => it.lookup(db).container, - ContainerId::TraitId(it) => it.module(db), + ContainerId::TraitId(it) => it.lookup(db).container, } } } @@ -512,7 +524,7 @@ impl HasModule for ConstLoc { match self.container { ContainerId::ModuleId(it) => it, ContainerId::ImplId(it) => it.lookup(db).container, - ContainerId::TraitId(it) => it.module(db), + ContainerId::TraitId(it) => it.lookup(db).container, } } } @@ -542,7 +554,7 @@ impl HasModule for GenericDefId { match self { GenericDefId::FunctionId(it) => it.lookup(db).module(db), GenericDefId::AdtId(it) => it.module(db), - GenericDefId::TraitId(it) => it.module(db), + GenericDefId::TraitId(it) => it.lookup(db).container, GenericDefId::TypeAliasId(it) => it.lookup(db).module(db), GenericDefId::ImplId(it) => it.lookup(db).container, GenericDefId::EnumVariantId(it) => it.parent.module(db), -- cgit v1.2.3