diff options
author | Florian Diebold <[email protected]> | 2021-05-16 14:50:28 +0100 |
---|---|---|
committer | Florian Diebold <[email protected]> | 2021-05-21 16:48:34 +0100 |
commit | 1250ddc5cf58ff0a6bbf7c07e5bd9f7cc7db5a09 (patch) | |
tree | 51c6ed040c2b1ec6b33321501ced866d87701c71 /crates/hir_ty/src/db.rs | |
parent | a3d9cac69057db700c4f6e01b84dc59529ea6dfd (diff) |
Rework obligation handling
We can't do the easy hack that we did before anymore, where we kept
track of whether any inference variables changed since the last time we
rechecked obligations. Instead, we store the obligations in
canonicalized form; that way we can easily check the inference variables
to see whether they have changed since the goal was canonicalized.
Diffstat (limited to 'crates/hir_ty/src/db.rs')
-rw-r--r-- | crates/hir_ty/src/db.rs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/crates/hir_ty/src/db.rs b/crates/hir_ty/src/db.rs index f773aa621..be5b9110e 100644 --- a/crates/hir_ty/src/db.rs +++ b/crates/hir_ty/src/db.rs | |||
@@ -134,14 +134,14 @@ pub trait HirDatabase: DefDatabase + Upcast<dyn DefDatabase> { | |||
134 | fn trait_solve( | 134 | fn trait_solve( |
135 | &self, | 135 | &self, |
136 | krate: CrateId, | 136 | krate: CrateId, |
137 | goal: crate::Canonical<crate::InEnvironment<crate::DomainGoal>>, | 137 | goal: crate::Canonical<crate::InEnvironment<crate::Goal>>, |
138 | ) -> Option<crate::Solution>; | 138 | ) -> Option<crate::Solution>; |
139 | 139 | ||
140 | #[salsa::invoke(crate::traits::trait_solve_query)] | 140 | #[salsa::invoke(crate::traits::trait_solve_query)] |
141 | fn trait_solve_query( | 141 | fn trait_solve_query( |
142 | &self, | 142 | &self, |
143 | krate: CrateId, | 143 | krate: CrateId, |
144 | goal: crate::Canonical<crate::InEnvironment<crate::DomainGoal>>, | 144 | goal: crate::Canonical<crate::InEnvironment<crate::Goal>>, |
145 | ) -> Option<crate::Solution>; | 145 | ) -> Option<crate::Solution>; |
146 | 146 | ||
147 | #[salsa::invoke(chalk_db::program_clauses_for_chalk_env_query)] | 147 | #[salsa::invoke(chalk_db::program_clauses_for_chalk_env_query)] |
@@ -168,7 +168,7 @@ fn infer_wait(db: &dyn HirDatabase, def: DefWithBodyId) -> Arc<InferenceResult> | |||
168 | fn trait_solve_wait( | 168 | fn trait_solve_wait( |
169 | db: &dyn HirDatabase, | 169 | db: &dyn HirDatabase, |
170 | krate: CrateId, | 170 | krate: CrateId, |
171 | goal: crate::Canonical<crate::InEnvironment<crate::DomainGoal>>, | 171 | goal: crate::Canonical<crate::InEnvironment<crate::Goal>>, |
172 | ) -> Option<crate::Solution> { | 172 | ) -> Option<crate::Solution> { |
173 | let _p = profile::span("trait_solve::wait"); | 173 | let _p = profile::span("trait_solve::wait"); |
174 | db.trait_solve_query(krate, goal) | 174 | db.trait_solve_query(krate, goal) |