diff options
author | Florian Diebold <[email protected]> | 2019-09-17 22:11:20 +0100 |
---|---|---|
committer | Florian Diebold <[email protected]> | 2019-09-17 22:11:20 +0100 |
commit | c2f9558e1af8dbf73ff86eeffcb9ea6940947dd6 (patch) | |
tree | 7fb92fc7fb0501b8eec5b2b0c26fd339279aac12 /crates/ra_hir/src/ty/lower.rs | |
parent | 69c8cfc4c17e9f4533437c757e754a140c0a9ebc (diff) |
Remove assoc type selection code for now to fix crashes
Diffstat (limited to 'crates/ra_hir/src/ty/lower.rs')
-rw-r--r-- | crates/ra_hir/src/ty/lower.rs | 23 |
1 files changed, 4 insertions, 19 deletions
diff --git a/crates/ra_hir/src/ty/lower.rs b/crates/ra_hir/src/ty/lower.rs index 35fdd4a37..a83842b0f 100644 --- a/crates/ra_hir/src/ty/lower.rs +++ b/crates/ra_hir/src/ty/lower.rs | |||
@@ -189,26 +189,11 @@ impl Ty { | |||
189 | } | 189 | } |
190 | 190 | ||
191 | fn select_associated_type( | 191 | fn select_associated_type( |
192 | db: &impl HirDatabase, | 192 | _db: &impl HirDatabase, |
193 | resolver: &Resolver, | 193 | _resolver: &Resolver, |
194 | self_ty: Ty, | 194 | _self_ty: Ty, |
195 | segment: &PathSegment, | 195 | _segment: &PathSegment, |
196 | ) -> Ty { | 196 | ) -> Ty { |
197 | let env = trait_env(db, resolver); | ||
198 | let traits_from_env = env.trait_predicates_for_self_ty(&self_ty).map(|tr| tr.trait_); | ||
199 | let traits = traits_from_env.flat_map(|t| t.all_super_traits(db)); | ||
200 | for t in traits { | ||
201 | if let Some(associated_ty) = t.associated_type_by_name(db, &segment.name) { | ||
202 | let generics = t.generic_params(db); | ||
203 | let mut substs = Vec::new(); | ||
204 | substs.push(self_ty.clone()); | ||
205 | substs.extend( | ||
206 | iter::repeat(Ty::Unknown).take(generics.count_params_including_parent() - 1), | ||
207 | ); | ||
208 | // FIXME handle type parameters on the segment | ||
209 | return Ty::Projection(ProjectionTy { associated_ty, parameters: substs.into() }); | ||
210 | } | ||
211 | } | ||
212 | Ty::Unknown | 197 | Ty::Unknown |
213 | } | 198 | } |
214 | 199 | ||