diff options
author | Aleksey Kladov <[email protected]> | 2020-03-23 13:06:54 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2020-03-23 13:06:54 +0000 |
commit | f8fd242199bb5cb41ab2579548b89dbfe6af94c2 (patch) | |
tree | 48742a62821c23addc1e7f06f7f273762c1c585d /crates/ra_hir/src/code_model.rs | |
parent | a2f7ca27c082bef625bc33e1eca622457102bae4 (diff) | |
parent | 559aeb2932368b40cda9ff8d3f7c4cf3aa065819 (diff) |
Merge pull request #3686 from Veetaha/feature/hover-actual-type-params
ra_hir: add more privacy for Type
Diffstat (limited to 'crates/ra_hir/src/code_model.rs')
-rw-r--r-- | crates/ra_hir/src/code_model.rs | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index 4b150ef06..e91abf6f5 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs | |||
@@ -10,7 +10,7 @@ use hir_def::{ | |||
10 | docs::Documentation, | 10 | docs::Documentation, |
11 | expr::{BindingAnnotation, Pat, PatId}, | 11 | expr::{BindingAnnotation, Pat, PatId}, |
12 | per_ns::PerNs, | 12 | per_ns::PerNs, |
13 | resolver::HasResolver, | 13 | resolver::{HasResolver, Resolver}, |
14 | type_ref::{Mutability, TypeRef}, | 14 | type_ref::{Mutability, TypeRef}, |
15 | AdtId, AssocContainerId, ConstId, DefWithBodyId, EnumId, FunctionId, GenericDefId, HasModule, | 15 | AdtId, AssocContainerId, ConstId, DefWithBodyId, EnumId, FunctionId, GenericDefId, HasModule, |
16 | ImplId, LocalEnumVariantId, LocalModuleId, LocalStructFieldId, Lookup, ModuleId, StaticId, | 16 | ImplId, LocalEnumVariantId, LocalModuleId, LocalStructFieldId, Lookup, ModuleId, StaticId, |
@@ -912,10 +912,8 @@ impl Local { | |||
912 | let def = DefWithBodyId::from(self.parent); | 912 | let def = DefWithBodyId::from(self.parent); |
913 | let infer = db.infer(def); | 913 | let infer = db.infer(def); |
914 | let ty = infer[self.pat_id].clone(); | 914 | let ty = infer[self.pat_id].clone(); |
915 | let resolver = def.resolver(db.upcast()); | ||
916 | let krate = def.module(db.upcast()).krate; | 915 | let krate = def.module(db.upcast()).krate; |
917 | let environment = TraitEnvironment::lower(db, &resolver); | 916 | Type::new(db, krate, def, ty) |
918 | Type { krate, ty: InEnvironment { value: ty, environment } } | ||
919 | } | 917 | } |
920 | 918 | ||
921 | pub fn source(self, db: &dyn HirDatabase) -> InFile<Either<ast::BindPat, ast::SelfParam>> { | 919 | pub fn source(self, db: &dyn HirDatabase) -> InFile<Either<ast::BindPat, ast::SelfParam>> { |
@@ -1020,11 +1018,21 @@ impl ImplDef { | |||
1020 | 1018 | ||
1021 | #[derive(Clone, PartialEq, Eq, Debug)] | 1019 | #[derive(Clone, PartialEq, Eq, Debug)] |
1022 | pub struct Type { | 1020 | pub struct Type { |
1023 | pub(crate) krate: CrateId, | 1021 | krate: CrateId, |
1024 | pub(crate) ty: InEnvironment<Ty>, | 1022 | ty: InEnvironment<Ty>, |
1025 | } | 1023 | } |
1026 | 1024 | ||
1027 | impl Type { | 1025 | impl Type { |
1026 | pub(crate) fn new_with_resolver( | ||
1027 | db: &dyn HirDatabase, | ||
1028 | resolver: &Resolver, | ||
1029 | ty: Ty, | ||
1030 | ) -> Option<Type> { | ||
1031 | let krate = resolver.krate()?; | ||
1032 | let environment = TraitEnvironment::lower(db, &resolver); | ||
1033 | Some(Type { krate, ty: InEnvironment { value: ty, environment } }) | ||
1034 | } | ||
1035 | |||
1028 | fn new(db: &dyn HirDatabase, krate: CrateId, lexical_env: impl HasResolver, ty: Ty) -> Type { | 1036 | fn new(db: &dyn HirDatabase, krate: CrateId, lexical_env: impl HasResolver, ty: Ty) -> Type { |
1029 | let resolver = lexical_env.resolver(db.upcast()); | 1037 | let resolver = lexical_env.resolver(db.upcast()); |
1030 | let environment = TraitEnvironment::lower(db, &resolver); | 1038 | let environment = TraitEnvironment::lower(db, &resolver); |