]> git.lizzy.rs Git - rust.git/commitdiff
Remove assoc type selection code for now to fix crashes
authorFlorian Diebold <flodiebold@gmail.com>
Tue, 17 Sep 2019 21:11:20 +0000 (23:11 +0200)
committerFlorian Diebold <flodiebold@gmail.com>
Tue, 17 Sep 2019 21:11:20 +0000 (23:11 +0200)
crates/ra_hir/src/ty/lower.rs
crates/ra_hir/src/ty/tests.rs

index 35fdd4a37cdd8cd8f7084737de14c1749b0b9c6e..a83842b0f3ae0e56ac4bae068f54d769dd42ee12 100644 (file)
@@ -189,26 +189,11 @@ pub(crate) fn from_hir_path(db: &impl HirDatabase, resolver: &Resolver, path: &P
     }
 
     fn select_associated_type(
-        db: &impl HirDatabase,
-        resolver: &Resolver,
-        self_ty: Ty,
-        segment: &PathSegment,
+        _db: &impl HirDatabase,
+        _resolver: &Resolver,
+        _self_ty: Ty,
+        _segment: &PathSegment,
     ) -> Ty {
-        let env = trait_env(db, resolver);
-        let traits_from_env = env.trait_predicates_for_self_ty(&self_ty).map(|tr| tr.trait_);
-        let traits = traits_from_env.flat_map(|t| t.all_super_traits(db));
-        for t in traits {
-            if let Some(associated_ty) = t.associated_type_by_name(db, &segment.name) {
-                let generics = t.generic_params(db);
-                let mut substs = Vec::new();
-                substs.push(self_ty.clone());
-                substs.extend(
-                    iter::repeat(Ty::Unknown).take(generics.count_params_including_parent() - 1),
-                );
-                // FIXME handle type parameters on the segment
-                return Ty::Projection(ProjectionTy { associated_ty, parameters: substs.into() });
-            }
-        }
         Ty::Unknown
     }
 
index 9a3faa9aba455b711e1bd311e1f508fbb5a866f7..09c17fdf4d2966e6d9bee3f3480c1180f91ed645 100644 (file)
@@ -2740,17 +2740,17 @@ fn test() {
     [202; 203) 't': T
     [221; 223) '{}': ()
     [234; 300) '{     ...(S); }': ()
-    [244; 245) 'x': u32
-    [248; 252) 'foo1': fn foo1<S>(T) -> <T as Iterable>::Item
-    [248; 255) 'foo1(S)': u32
+    [244; 245) 'x': {unknown}
+    [248; 252) 'foo1': fn foo1<S>(T) -> {unknown}
+    [248; 255) 'foo1(S)': {unknown}
     [253; 254) 'S': S
     [265; 266) 'y': u32
     [269; 273) 'foo2': fn foo2<S>(T) -> <T as Iterable>::Item
     [269; 276) 'foo2(S)': u32
     [274; 275) 'S': S
-    [286; 287) 'z': u32
-    [290; 294) 'foo3': fn foo3<S>(T) -> <T as Iterable>::Item
-    [290; 297) 'foo3(S)': u32
+    [286; 287) 'z': {unknown}
+    [290; 294) 'foo3': fn foo3<S>(T) -> {unknown}
+    [290; 297) 'foo3(S)': {unknown}
     [295; 296) 'S': S
     "###
     );