Skip to content

Commit a958b84

Browse files
Fix merging of import granularity setting with the granularity we infer
Previously it was wrong for some combinations.
1 parent c13b877 commit a958b84

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/tools/rust-analyzer/crates/ide-db/src/imports/insert_use.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,18 @@ fn insert_use_with_alias_option(
179179
ImportGranularityGuess::Unknown => mb,
180180
ImportGranularityGuess::Item => None,
181181
ImportGranularityGuess::Module => Some(MergeBehavior::Module),
182-
ImportGranularityGuess::ModuleOrItem => mb.and(Some(MergeBehavior::Module)),
182+
// We use the user's setting to infer if this is module or item.
183+
ImportGranularityGuess::ModuleOrItem => match mb {
184+
Some(MergeBehavior::Module) | None => mb,
185+
// There isn't really a way to decide between module or item here, so we just pick one.
186+
// FIXME: Maybe it is possible to infer based on semantic analysis?
187+
Some(MergeBehavior::One | MergeBehavior::Crate) => Some(MergeBehavior::Module),
188+
},
183189
ImportGranularityGuess::Crate => Some(MergeBehavior::Crate),
184-
ImportGranularityGuess::CrateOrModule => mb.or(Some(MergeBehavior::Crate)),
190+
ImportGranularityGuess::CrateOrModule => match mb {
191+
Some(MergeBehavior::Crate | MergeBehavior::Module) => mb,
192+
Some(MergeBehavior::One) | None => Some(MergeBehavior::Crate),
193+
},
185194
ImportGranularityGuess::One => Some(MergeBehavior::One),
186195
};
187196
}

0 commit comments

Comments
 (0)