diff options
author | Florian Diebold <[email protected]> | 2019-07-06 15:41:04 +0100 |
---|---|---|
committer | Florian Diebold <[email protected]> | 2019-07-06 16:34:05 +0100 |
commit | 065d3987012b138b123f0544de193f8bb560b1b5 (patch) | |
tree | 029ff3c3a9beb816c3056cd38595e15f3c541998 /crates/ra_hir/src/resolve.rs | |
parent | 219e0e8c8d6672feaab2f19b7c3280d5967360e4 (diff) |
Add trait obligations for where clauses when calling functions/methods
E.g. if we call `foo<T: Into<u32>>(x)`, that adds an obligation that `x:
Into<u32>`, etc.
Diffstat (limited to 'crates/ra_hir/src/resolve.rs')
-rw-r--r-- | crates/ra_hir/src/resolve.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/crates/ra_hir/src/resolve.rs b/crates/ra_hir/src/resolve.rs index c8be27e54..e2a7639b0 100644 --- a/crates/ra_hir/src/resolve.rs +++ b/crates/ra_hir/src/resolve.rs | |||
@@ -221,6 +221,18 @@ impl Resolver { | |||
221 | pub(crate) fn krate(&self) -> Option<Crate> { | 221 | pub(crate) fn krate(&self) -> Option<Crate> { |
222 | self.module().map(|t| t.0.krate()) | 222 | self.module().map(|t| t.0.krate()) |
223 | } | 223 | } |
224 | |||
225 | pub(crate) fn where_predicates_in_scope<'a>( | ||
226 | &'a self, | ||
227 | ) -> impl Iterator<Item = &'a crate::generics::WherePredicate> + 'a { | ||
228 | self.scopes | ||
229 | .iter() | ||
230 | .filter_map(|scope| match scope { | ||
231 | Scope::GenericParams(params) => Some(params), | ||
232 | _ => None, | ||
233 | }) | ||
234 | .flat_map(|params| params.where_predicates.iter()) | ||
235 | } | ||
224 | } | 236 | } |
225 | 237 | ||
226 | impl Resolver { | 238 | impl Resolver { |