Unnamed repository; edit this file 'description' to name the repository.
Fix misuse of ?
This exited the whole loop instead of having continue semantics and continuing to find workspaces. So wrap in find_map.
Cormac Relf 4 months ago
parent f9b91f0 · commit a783265
-rw-r--r--crates/rust-analyzer/src/global_state.rs25
1 files changed, 11 insertions, 14 deletions
diff --git a/crates/rust-analyzer/src/global_state.rs b/crates/rust-analyzer/src/global_state.rs
index 99dc8bce06..68d65cdee6 100644
--- a/crates/rust-analyzer/src/global_state.rs
+++ b/crates/rust-analyzer/src/global_state.rs
@@ -847,21 +847,18 @@ impl GlobalStateSnapshot {
&self,
package: &Arc<PackageId>,
) -> Option<FxHashSet<Arc<PackageId>>> {
- for workspace in self.workspaces.iter() {
- match &workspace.kind {
- ProjectWorkspaceKind::Cargo { cargo, .. }
- | ProjectWorkspaceKind::DetachedFile { cargo: Some((cargo, _, _)), .. } => {
- let package = cargo.packages().find(|p| cargo[*p].id == *package)?;
-
- return cargo[package]
- .all_member_deps
- .as_ref()
- .map(|deps| deps.iter().map(|dep| cargo[*dep].id.clone()).collect());
- }
- _ => {}
+ self.workspaces.iter().find_map(|workspace| match &workspace.kind {
+ ProjectWorkspaceKind::Cargo { cargo, .. }
+ | ProjectWorkspaceKind::DetachedFile { cargo: Some((cargo, _, _)), .. } => {
+ let package = cargo.packages().find(|p| cargo[*p].id == *package)?;
+
+ return cargo[package]
+ .all_member_deps
+ .as_ref()
+ .map(|deps| deps.iter().map(|dep| cargo[*dep].id.clone()).collect());
}
- }
- None
+ _ => None,
+ })
}
pub(crate) fn file_exists(&self, file_id: FileId) -> bool {