diff options
author | Florian Diebold <[email protected]> | 2019-11-15 19:32:58 +0000 |
---|---|---|
committer | Florian Diebold <[email protected]> | 2019-11-16 12:11:29 +0000 |
commit | e21b82e035050570a8d8e77ebe8b50f7d34ad251 (patch) | |
tree | a72782de07c150cc3677259633bdf695aed9b8d7 /crates/ra_hir/src/db.rs | |
parent | d9d99369b2765eaef7f49cd519990769191c3381 (diff) |
Upgrade Chalk
Associated type values (in impls) are now a separate entity in Chalk, so we have
to intern separate IDs for them.
Diffstat (limited to 'crates/ra_hir/src/db.rs')
-rw-r--r-- | crates/ra_hir/src/db.rs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/crates/ra_hir/src/db.rs b/crates/ra_hir/src/db.rs index 276b0774f..d9fad0ae2 100644 --- a/crates/ra_hir/src/db.rs +++ b/crates/ra_hir/src/db.rs | |||
@@ -13,8 +13,10 @@ use crate::{ | |||
13 | lang_item::{LangItemTarget, LangItems}, | 13 | lang_item::{LangItemTarget, LangItems}, |
14 | traits::TraitData, | 14 | traits::TraitData, |
15 | ty::{ | 15 | ty::{ |
16 | method_resolution::CrateImplBlocks, traits::Impl, CallableDef, FnSig, GenericPredicate, | 16 | method_resolution::CrateImplBlocks, |
17 | InferenceResult, Namespace, Substs, Ty, TypableDef, TypeCtor, | 17 | traits::{AssocTyValue, Impl}, |
18 | CallableDef, FnSig, GenericPredicate, InferenceResult, Namespace, Substs, Ty, TypableDef, | ||
19 | TypeCtor, | ||
18 | }, | 20 | }, |
19 | type_alias::TypeAliasData, | 21 | type_alias::TypeAliasData, |
20 | Const, ConstData, Crate, DefWithBody, FnData, Function, ImplBlock, Module, Static, StructField, | 22 | Const, ConstData, Crate, DefWithBody, FnData, Function, ImplBlock, Module, Static, StructField, |
@@ -119,6 +121,8 @@ pub trait HirDatabase: DefDatabase + AstDatabase { | |||
119 | fn intern_type_ctor(&self, type_ctor: TypeCtor) -> ids::TypeCtorId; | 121 | fn intern_type_ctor(&self, type_ctor: TypeCtor) -> ids::TypeCtorId; |
120 | #[salsa::interned] | 122 | #[salsa::interned] |
121 | fn intern_chalk_impl(&self, impl_: Impl) -> ids::GlobalImplId; | 123 | fn intern_chalk_impl(&self, impl_: Impl) -> ids::GlobalImplId; |
124 | #[salsa::interned] | ||
125 | fn intern_assoc_ty_value(&self, assoc_ty_value: AssocTyValue) -> ids::AssocTyValueId; | ||
122 | 126 | ||
123 | #[salsa::invoke(crate::ty::traits::chalk::associated_ty_data_query)] | 127 | #[salsa::invoke(crate::ty::traits::chalk::associated_ty_data_query)] |
124 | fn associated_ty_data(&self, id: chalk_ir::TypeId) -> Arc<chalk_rust_ir::AssociatedTyDatum>; | 128 | fn associated_ty_data(&self, id: chalk_ir::TypeId) -> Arc<chalk_rust_ir::AssociatedTyDatum>; |
@@ -140,6 +144,13 @@ pub trait HirDatabase: DefDatabase + AstDatabase { | |||
140 | #[salsa::invoke(crate::ty::traits::chalk::impl_datum_query)] | 144 | #[salsa::invoke(crate::ty::traits::chalk::impl_datum_query)] |
141 | fn impl_datum(&self, krate: Crate, impl_id: chalk_ir::ImplId) -> Arc<chalk_rust_ir::ImplDatum>; | 145 | fn impl_datum(&self, krate: Crate, impl_id: chalk_ir::ImplId) -> Arc<chalk_rust_ir::ImplDatum>; |
142 | 146 | ||
147 | #[salsa::invoke(crate::ty::traits::chalk::associated_ty_value_query)] | ||
148 | fn associated_ty_value( | ||
149 | &self, | ||
150 | krate: Crate, | ||
151 | id: chalk_rust_ir::AssociatedTyValueId, | ||
152 | ) -> Arc<chalk_rust_ir::AssociatedTyValue>; | ||
153 | |||
143 | #[salsa::invoke(crate::ty::traits::trait_solve_query)] | 154 | #[salsa::invoke(crate::ty::traits::trait_solve_query)] |
144 | fn trait_solve( | 155 | fn trait_solve( |
145 | &self, | 156 | &self, |