diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2019-11-26 11:05:05 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2019-11-26 11:05:05 +0000 |
commit | 500e022f7decbee29a693b0f0dd2f63789a99e5a (patch) | |
tree | 2f7839288ce5676a89c6d6062cbaf70544e0beed /crates/ra_hir_def/src | |
parent | 5901cc736074bbc4d780a8e45079d405ab2cec4b (diff) | |
parent | e5eadb339039e21718d382c0b3d02a4bf053b3f4 (diff) |
Merge #2398
2398: WIP: introduce hir::Type r=matklad a=matklad
This introduces `hir::Type` wrapper over `hir::Ty`, with two purposes:
* bind `Ty` and it's corresponding environment
* Am I correct that `Ty` without an env doesn't make much sense, because the meaning of type parameters is unclear
* Am I correct that we can safely re-use the same environment for all types derived from the given type?
* hide representation defails of `Ty`. Specifically, I want to change `Ty::Adt` to use `hir_def::AdtId` instead of `hir::Adt`, but IDE doesn't know about underlying IDs. More generally, I feel like IDE shouldn't know that `Ty` is enum.
@flodiebold what do you think about this?
Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_hir_def/src')
-rw-r--r-- | crates/ra_hir_def/src/lib.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/crates/ra_hir_def/src/lib.rs b/crates/ra_hir_def/src/lib.rs index a88a78b38..274dd1467 100644 --- a/crates/ra_hir_def/src/lib.rs +++ b/crates/ra_hir_def/src/lib.rs | |||
@@ -489,6 +489,16 @@ impl HasModule for AdtId { | |||
489 | } | 489 | } |
490 | } | 490 | } |
491 | 491 | ||
492 | impl HasModule for DefWithBodyId { | ||
493 | fn module(&self, db: &impl db::DefDatabase) -> ModuleId { | ||
494 | match self { | ||
495 | DefWithBodyId::FunctionId(it) => it.lookup(db).module(db), | ||
496 | DefWithBodyId::StaticId(it) => it.lookup(db).module(db), | ||
497 | DefWithBodyId::ConstId(it) => it.lookup(db).module(db), | ||
498 | } | ||
499 | } | ||
500 | } | ||
501 | |||
492 | impl HasModule for StaticLoc { | 502 | impl HasModule for StaticLoc { |
493 | fn module(&self, _db: &impl db::DefDatabase) -> ModuleId { | 503 | fn module(&self, _db: &impl db::DefDatabase) -> ModuleId { |
494 | self.container | 504 | self.container |