Unnamed repository; edit this file 'description' to name the repository.
Fix merging of import granularity setting with the granularity we infer
Previously it was wrong for some combinations.
Chayim Refael Friedman 10 months ago
parent 10db7ac · commit 9d70d32
-rw-r--r--crates/ide-db/src/imports/insert_use.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/crates/ide-db/src/imports/insert_use.rs b/crates/ide-db/src/imports/insert_use.rs
index caba1cdd70..4444ef5d81 100644
--- a/crates/ide-db/src/imports/insert_use.rs
+++ b/crates/ide-db/src/imports/insert_use.rs
@@ -179,9 +179,18 @@ fn insert_use_with_alias_option(
ImportGranularityGuess::Unknown => mb,
ImportGranularityGuess::Item => None,
ImportGranularityGuess::Module => Some(MergeBehavior::Module),
- ImportGranularityGuess::ModuleOrItem => mb.and(Some(MergeBehavior::Module)),
+ // We use the user's setting to infer if this is module or item.
+ ImportGranularityGuess::ModuleOrItem => match mb {
+ Some(MergeBehavior::Module) | None => mb,
+ // There isn't really a way to decide between module or item here, so we just pick one.
+ // FIXME: Maybe it is possible to infer based on semantic analysis?
+ Some(MergeBehavior::One | MergeBehavior::Crate) => Some(MergeBehavior::Module),
+ },
ImportGranularityGuess::Crate => Some(MergeBehavior::Crate),
- ImportGranularityGuess::CrateOrModule => mb.or(Some(MergeBehavior::Crate)),
+ ImportGranularityGuess::CrateOrModule => match mb {
+ Some(MergeBehavior::Crate | MergeBehavior::Module) => mb,
+ Some(MergeBehavior::One) | None => Some(MergeBehavior::Crate),
+ },
ImportGranularityGuess::One => Some(MergeBehavior::One),
};
}