aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty/traits.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/ty/traits.rs')
-rw-r--r--crates/ra_hir/src/ty/traits.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/crates/ra_hir/src/ty/traits.rs b/crates/ra_hir/src/ty/traits.rs
index f8c3958bd..06f483899 100644
--- a/crates/ra_hir/src/ty/traits.rs
+++ b/crates/ra_hir/src/ty/traits.rs
@@ -1,8 +1,8 @@
1//! Stuff that will probably mostly replaced by Chalk. 1//! Stuff that will probably mostly replaced by Chalk.
2use std::collections::HashMap; 2use std::collections::HashMap;
3 3
4use crate::db::HirDatabase; 4use crate::{db::HirDatabase, generics::HasGenericParams};
5use super::{ TraitRef, Substs, infer::{ TypeVarId, InferTy}, Ty}; 5use super::{TraitRef, Substs, infer::{TypeVarId, InferTy}, Ty};
6 6
7// Copied (and simplified) from Chalk 7// Copied (and simplified) from Chalk
8 8
@@ -59,7 +59,10 @@ pub(crate) fn implements(db: &impl HirDatabase, trait_ref: TraitRef) -> Option<S
59 None => return None, 59 None => return None,
60 }; 60 };
61 let crate_impl_blocks = db.impls_in_crate(krate); 61 let crate_impl_blocks = db.impls_in_crate(krate);
62 let mut impl_blocks = crate_impl_blocks.lookup_impl_blocks_for_trait(&trait_ref.trait_); 62 let mut impl_blocks = crate_impl_blocks
63 .lookup_impl_blocks_for_trait(&trait_ref.trait_)
64 // we don't handle where clauses at all, waiting for Chalk for that
65 .filter(|impl_block| impl_block.generic_params(db).where_predicates.is_empty());
63 impl_blocks 66 impl_blocks
64 .find_map(|impl_block| unify_trait_refs(&trait_ref, &impl_block.target_trait_ref(db)?)) 67 .find_map(|impl_block| unify_trait_refs(&trait_ref, &impl_block.target_trait_ref(db)?))
65} 68}