diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-06-13 12:13:31 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2021-06-13 12:13:31 +0100 |
commit | be9742809c80fbb86b1a25479a4cf2a0df24adb7 (patch) | |
tree | c9aeedf0d7167d436befbdc5cea6b06b7a1cfe98 /crates/hir_def/src/lib.rs | |
parent | e29a4c36c7135820929e741ed40192648556aca6 (diff) | |
parent | 5ca71a19903cea277ed8a347b36cffeca6b99922 (diff) |
Merge #9244
9244: feat: Make block-local trait impls work r=flodiebold a=flodiebold
As long as either the trait or the implementing type are defined in the same block.
CC #8961
Co-authored-by: Florian Diebold <[email protected]>
Diffstat (limited to 'crates/hir_def/src/lib.rs')
-rw-r--r-- | crates/hir_def/src/lib.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/crates/hir_def/src/lib.rs b/crates/hir_def/src/lib.rs index 303083c6d..bb174aec8 100644 --- a/crates/hir_def/src/lib.rs +++ b/crates/hir_def/src/lib.rs | |||
@@ -112,6 +112,10 @@ impl ModuleId { | |||
112 | self.def_map(db).containing_module(self.local_id) | 112 | self.def_map(db).containing_module(self.local_id) |
113 | } | 113 | } |
114 | 114 | ||
115 | pub fn containing_block(&self) -> Option<BlockId> { | ||
116 | self.block | ||
117 | } | ||
118 | |||
115 | /// Returns `true` if this module represents a block expression. | 119 | /// Returns `true` if this module represents a block expression. |
116 | /// | 120 | /// |
117 | /// Returns `false` if this module is a submodule *inside* a block expression | 121 | /// Returns `false` if this module is a submodule *inside* a block expression |
@@ -581,6 +585,18 @@ impl HasModule for GenericDefId { | |||
581 | } | 585 | } |
582 | } | 586 | } |
583 | 587 | ||
588 | impl HasModule for TypeAliasId { | ||
589 | fn module(&self, db: &dyn db::DefDatabase) -> ModuleId { | ||
590 | self.lookup(db).module(db) | ||
591 | } | ||
592 | } | ||
593 | |||
594 | impl HasModule for TraitId { | ||
595 | fn module(&self, db: &dyn db::DefDatabase) -> ModuleId { | ||
596 | self.lookup(db).container | ||
597 | } | ||
598 | } | ||
599 | |||
584 | impl HasModule for StaticLoc { | 600 | impl HasModule for StaticLoc { |
585 | fn module(&self, _db: &dyn db::DefDatabase) -> ModuleId { | 601 | fn module(&self, _db: &dyn db::DefDatabase) -> ModuleId { |
586 | self.container | 602 | self.container |