Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-db/src/imports/import_assets.rs')
-rw-r--r--crates/ide-db/src/imports/import_assets.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/crates/ide-db/src/imports/import_assets.rs b/crates/ide-db/src/imports/import_assets.rs
index 90e3bb61f4..35579eb259 100644
--- a/crates/ide-db/src/imports/import_assets.rs
+++ b/crates/ide-db/src/imports/import_assets.rs
@@ -600,7 +600,19 @@ fn trait_applicable_items<'db>(
}
deref_chain
.into_iter()
- .filter_map(|ty| Some((ty.krate(db).into(), ty.fingerprint_for_trait_impl()?)))
+ .flat_map(|ty| {
+ let fingerprint = ty.fingerprint_for_trait_impl()?;
+ let mut crates = vec![];
+
+ if let Some(adt) = ty.as_adt() {
+ // Push crate where ADT was defined
+ crates.push((adt.krate(db).into(), fingerprint));
+ }
+ // Always include environment crate
+ crates.push((ty.krate(db).into(), fingerprint));
+ Some(crates)
+ })
+ .flatten()
.unique()
.collect::<Vec<_>>()
};