diff options
author | Aleksey Kladov <[email protected]> | 2019-12-12 13:34:03 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-12-12 13:36:14 +0000 |
commit | 82e9b245587046d2a1ed432225b19023adbe3245 (patch) | |
tree | acabb715858003dcab9af2810065b8fe40095e90 /crates/ra_hir_def/src/lib.rs | |
parent | 7b0644d81e52d00a7a6795b187f356213ff68225 (diff) |
Move traits to the new loc
Diffstat (limited to 'crates/ra_hir_def/src/lib.rs')
-rw-r--r-- | crates/ra_hir_def/src/lib.rs | 30 |
1 files changed, 21 insertions, 9 deletions
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 { | |||
253 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 253 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
254 | pub struct TraitId(salsa::InternId); | 254 | pub struct TraitId(salsa::InternId); |
255 | impl_intern_key!(TraitId); | 255 | impl_intern_key!(TraitId); |
256 | impl AstItemDef<ast::TraitDef> for TraitId { | 256 | |
257 | fn intern(db: &impl InternDatabase, loc: ItemLoc<ast::TraitDef>) -> Self { | 257 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
258 | db.intern_trait(loc) | 258 | pub struct TraitLoc { |
259 | pub container: ModuleId, | ||
260 | pub ast_id: AstId<ast::TraitDef>, | ||
261 | } | ||
262 | |||
263 | impl Intern for TraitLoc { | ||
264 | type ID = TraitId; | ||
265 | fn intern(self, db: &impl db::DefDatabase) -> TraitId { | ||
266 | db.intern_trait(self) | ||
259 | } | 267 | } |
260 | fn lookup_intern(self, db: &impl InternDatabase) -> ItemLoc<ast::TraitDef> { | 268 | } |
261 | db.lookup_intern_trait(self) | 269 | |
270 | impl Lookup for TraitId { | ||
271 | type Data = TraitLoc; | ||
272 | fn lookup(&self, db: &impl db::DefDatabase) -> TraitLoc { | ||
273 | db.lookup_intern_trait(*self) | ||
262 | } | 274 | } |
263 | } | 275 | } |
264 | 276 | ||
@@ -492,7 +504,7 @@ impl HasModule for FunctionLoc { | |||
492 | match self.container { | 504 | match self.container { |
493 | ContainerId::ModuleId(it) => it, | 505 | ContainerId::ModuleId(it) => it, |
494 | ContainerId::ImplId(it) => it.lookup(db).container, | 506 | ContainerId::ImplId(it) => it.lookup(db).container, |
495 | ContainerId::TraitId(it) => it.module(db), | 507 | ContainerId::TraitId(it) => it.lookup(db).container, |
496 | } | 508 | } |
497 | } | 509 | } |
498 | } | 510 | } |
@@ -502,7 +514,7 @@ impl HasModule for TypeAliasLoc { | |||
502 | match self.container { | 514 | match self.container { |
503 | ContainerId::ModuleId(it) => it, | 515 | ContainerId::ModuleId(it) => it, |
504 | ContainerId::ImplId(it) => it.lookup(db).container, | 516 | ContainerId::ImplId(it) => it.lookup(db).container, |
505 | ContainerId::TraitId(it) => it.module(db), | 517 | ContainerId::TraitId(it) => it.lookup(db).container, |
506 | } | 518 | } |
507 | } | 519 | } |
508 | } | 520 | } |
@@ -512,7 +524,7 @@ impl HasModule for ConstLoc { | |||
512 | match self.container { | 524 | match self.container { |
513 | ContainerId::ModuleId(it) => it, | 525 | ContainerId::ModuleId(it) => it, |
514 | ContainerId::ImplId(it) => it.lookup(db).container, | 526 | ContainerId::ImplId(it) => it.lookup(db).container, |
515 | ContainerId::TraitId(it) => it.module(db), | 527 | ContainerId::TraitId(it) => it.lookup(db).container, |
516 | } | 528 | } |
517 | } | 529 | } |
518 | } | 530 | } |
@@ -542,7 +554,7 @@ impl HasModule for GenericDefId { | |||
542 | match self { | 554 | match self { |
543 | GenericDefId::FunctionId(it) => it.lookup(db).module(db), | 555 | GenericDefId::FunctionId(it) => it.lookup(db).module(db), |
544 | GenericDefId::AdtId(it) => it.module(db), | 556 | GenericDefId::AdtId(it) => it.module(db), |
545 | GenericDefId::TraitId(it) => it.module(db), | 557 | GenericDefId::TraitId(it) => it.lookup(db).container, |
546 | GenericDefId::TypeAliasId(it) => it.lookup(db).module(db), | 558 | GenericDefId::TypeAliasId(it) => it.lookup(db).module(db), |
547 | GenericDefId::ImplId(it) => it.lookup(db).container, | 559 | GenericDefId::ImplId(it) => it.lookup(db).container, |
548 | GenericDefId::EnumVariantId(it) => it.parent.module(db), | 560 | GenericDefId::EnumVariantId(it) => it.parent.module(db), |