diff options
author | Florian Diebold <[email protected]> | 2019-07-07 17:14:56 +0100 |
---|---|---|
committer | Florian Diebold <[email protected]> | 2019-07-08 20:20:17 +0100 |
commit | 15862fc04183c7f9b3f3af666336a594a6a52cd9 (patch) | |
tree | 3593ee969c943d4881839e527e4305a1c3db2991 /crates/ra_hir/src/ty/traits.rs | |
parent | b1b12072eddaf989fb08ed7a2e39ec2dbbb83dde (diff) |
Use environment for associated type normalization as well
Diffstat (limited to 'crates/ra_hir/src/ty/traits.rs')
-rw-r--r-- | crates/ra_hir/src/ty/traits.rs | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/crates/ra_hir/src/ty/traits.rs b/crates/ra_hir/src/ty/traits.rs index e0c93550a..01f350bc1 100644 --- a/crates/ra_hir/src/ty/traits.rs +++ b/crates/ra_hir/src/ty/traits.rs | |||
@@ -134,20 +134,9 @@ pub(crate) fn implements_query( | |||
134 | pub(crate) fn normalize_query( | 134 | pub(crate) fn normalize_query( |
135 | db: &impl HirDatabase, | 135 | db: &impl HirDatabase, |
136 | krate: Crate, | 136 | krate: Crate, |
137 | projection: Canonical<ProjectionPredicate>, | 137 | projection: Canonical<InEnvironment<ProjectionPredicate>>, |
138 | ) -> Option<Solution> { | 138 | ) -> Option<Solution> { |
139 | let goal: chalk_ir::Goal = chalk_ir::Normalize { | 139 | let canonical = projection.to_chalk(db).cast(); |
140 | projection: projection.value.projection_ty.to_chalk(db), | ||
141 | ty: projection.value.ty.to_chalk(db), | ||
142 | } | ||
143 | .cast(); | ||
144 | debug!("goal: {:?}", goal); | ||
145 | // FIXME unify with `implements` | ||
146 | let env = chalk_ir::Environment::new(); | ||
147 | let in_env = chalk_ir::InEnvironment::new(&env, goal); | ||
148 | let parameter = chalk_ir::ParameterKind::Ty(chalk_ir::UniverseIndex::ROOT); | ||
149 | let canonical = | ||
150 | chalk_ir::Canonical { value: in_env, binders: vec![parameter; projection.num_vars] }; | ||
151 | // We currently don't deal with universes (I think / hope they're not yet | 140 | // We currently don't deal with universes (I think / hope they're not yet |
152 | // relevant for our use cases?) | 141 | // relevant for our use cases?) |
153 | let u_canonical = chalk_ir::UCanonical { canonical, universes: 1 }; | 142 | let u_canonical = chalk_ir::UCanonical { canonical, universes: 1 }; |