Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/resolver.rs')
-rw-r--r--crates/hir-def/src/resolver.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/crates/hir-def/src/resolver.rs b/crates/hir-def/src/resolver.rs
index 26655e40ca..316406c151 100644
--- a/crates/hir-def/src/resolver.rs
+++ b/crates/hir-def/src/resolver.rs
@@ -576,10 +576,12 @@ impl Resolver {
match scope {
Scope::BlockScope(m) => traits.extend(m.def_map[m.module_id].scope.traits()),
&Scope::ImplDefScope(impl_) => {
- if let Some(target_trait) = &db.impl_data(impl_).target_trait {
- if let Some(TypeNs::TraitId(trait_)) =
- self.resolve_path_in_type_ns_fully(db, &target_trait.path)
- {
+ let impl_data = db.impl_data(impl_);
+ if let Some(target_trait) = impl_data.target_trait {
+ if let Some(TypeNs::TraitId(trait_)) = self.resolve_path_in_type_ns_fully(
+ db,
+ &impl_data.types_map[target_trait.path],
+ ) {
traits.insert(trait_);
}
}
@@ -640,9 +642,9 @@ impl Resolver {
})
}
- pub fn generic_params(&self) -> Option<&Arc<GenericParams>> {
+ pub fn generic_params(&self) -> Option<&GenericParams> {
self.scopes().find_map(|scope| match scope {
- Scope::GenericParams { params, .. } => Some(params),
+ Scope::GenericParams { params, .. } => Some(&**params),
_ => None,
})
}