aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty/lower.rs
diff options
context:
space:
mode:
authorFlorian Diebold <[email protected]>2019-09-17 22:11:20 +0100
committerFlorian Diebold <[email protected]>2019-09-17 22:11:20 +0100
commitc2f9558e1af8dbf73ff86eeffcb9ea6940947dd6 (patch)
tree7fb92fc7fb0501b8eec5b2b0c26fd339279aac12 /crates/ra_hir/src/ty/lower.rs
parent69c8cfc4c17e9f4533437c757e754a140c0a9ebc (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.rs23
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