diff options
author | Aleksey Kladov <[email protected]> | 2019-12-19 17:12:46 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-12-19 17:12:46 +0000 |
commit | ba12e83c26b24358e1bfbae0f913f8dfa13fc68f (patch) | |
tree | 25c92eff2ad56df99c5b53886018bf65f9dbd55f /crates/ra_hir_def/src | |
parent | 5bd8de3f5e11732d67d0cc9bacda7d3a1b7cf13a (diff) |
Add body as a possible container for items
Diffstat (limited to 'crates/ra_hir_def/src')
-rw-r--r-- | crates/ra_hir_def/src/lib.rs | 24 | ||||
-rw-r--r-- | crates/ra_hir_def/src/resolver.rs | 1 |
2 files changed, 13 insertions, 12 deletions
diff --git a/crates/ra_hir_def/src/lib.rs b/crates/ra_hir_def/src/lib.rs index f085bbe87..4fc3127c4 100644 --- a/crates/ra_hir_def/src/lib.rs +++ b/crates/ra_hir_def/src/lib.rs | |||
@@ -335,6 +335,7 @@ pub enum ContainerId { | |||
335 | ModuleId(ModuleId), | 335 | ModuleId(ModuleId), |
336 | ImplId(ImplId), | 336 | ImplId(ImplId), |
337 | TraitId(TraitId), | 337 | TraitId(TraitId), |
338 | DefWithBodyId(DefWithBodyId), | ||
338 | } | 339 | } |
339 | 340 | ||
340 | /// A Data Type | 341 | /// A Data Type |
@@ -478,33 +479,32 @@ pub trait HasModule { | |||
478 | fn module(&self, db: &impl db::DefDatabase) -> ModuleId; | 479 | fn module(&self, db: &impl db::DefDatabase) -> ModuleId; |
479 | } | 480 | } |
480 | 481 | ||
481 | impl HasModule for FunctionLoc { | 482 | impl HasModule for ContainerId { |
482 | fn module(&self, db: &impl db::DefDatabase) -> ModuleId { | 483 | fn module(&self, db: &impl db::DefDatabase) -> ModuleId { |
483 | match self.container { | 484 | match *self { |
484 | ContainerId::ModuleId(it) => it, | 485 | ContainerId::ModuleId(it) => it, |
485 | ContainerId::ImplId(it) => it.lookup(db).container, | 486 | ContainerId::ImplId(it) => it.lookup(db).container, |
486 | ContainerId::TraitId(it) => it.lookup(db).container, | 487 | ContainerId::TraitId(it) => it.lookup(db).container, |
488 | ContainerId::DefWithBodyId(it) => it.module(db), | ||
487 | } | 489 | } |
488 | } | 490 | } |
489 | } | 491 | } |
490 | 492 | ||
493 | impl HasModule for FunctionLoc { | ||
494 | fn module(&self, db: &impl db::DefDatabase) -> ModuleId { | ||
495 | self.container.module(db) | ||
496 | } | ||
497 | } | ||
498 | |||
491 | impl HasModule for TypeAliasLoc { | 499 | impl HasModule for TypeAliasLoc { |
492 | fn module(&self, db: &impl db::DefDatabase) -> ModuleId { | 500 | fn module(&self, db: &impl db::DefDatabase) -> ModuleId { |
493 | match self.container { | 501 | self.container.module(db) |
494 | ContainerId::ModuleId(it) => it, | ||
495 | ContainerId::ImplId(it) => it.lookup(db).container, | ||
496 | ContainerId::TraitId(it) => it.lookup(db).container, | ||
497 | } | ||
498 | } | 502 | } |
499 | } | 503 | } |
500 | 504 | ||
501 | impl HasModule for ConstLoc { | 505 | impl HasModule for ConstLoc { |
502 | fn module(&self, db: &impl db::DefDatabase) -> ModuleId { | 506 | fn module(&self, db: &impl db::DefDatabase) -> ModuleId { |
503 | match self.container { | 507 | self.container.module(db) |
504 | ContainerId::ModuleId(it) => it, | ||
505 | ContainerId::ImplId(it) => it.lookup(db).container, | ||
506 | ContainerId::TraitId(it) => it.lookup(db).container, | ||
507 | } | ||
508 | } | 508 | } |
509 | } | 509 | } |
510 | 510 | ||
diff --git a/crates/ra_hir_def/src/resolver.rs b/crates/ra_hir_def/src/resolver.rs index 2694c0438..250329271 100644 --- a/crates/ra_hir_def/src/resolver.rs +++ b/crates/ra_hir_def/src/resolver.rs | |||
@@ -586,6 +586,7 @@ impl HasResolver for ContainerId { | |||
586 | ContainerId::TraitId(it) => it.resolver(db), | 586 | ContainerId::TraitId(it) => it.resolver(db), |
587 | ContainerId::ImplId(it) => it.resolver(db), | 587 | ContainerId::ImplId(it) => it.resolver(db), |
588 | ContainerId::ModuleId(it) => it.resolver(db), | 588 | ContainerId::ModuleId(it) => it.resolver(db), |
589 | ContainerId::DefWithBodyId(it) => it.resolver(db), | ||
589 | } | 590 | } |
590 | } | 591 | } |
591 | } | 592 | } |