Skip to content

Commit 343b0cc

Browse files
committed
simplify
1 parent 3168148 commit 343b0cc

File tree

1 file changed

+13
-18
lines changed

1 file changed

+13
-18
lines changed

crates/ide/src/prime_caches.rs

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -79,26 +79,18 @@ where
7979

8080
enum ParallelPrimeCacheWorkerProgress {
8181
BeginCrate { crate_id: CrateId, crate_name: String },
82-
EndCrate { crate_id: CrateId, cancelled: bool },
82+
EndCrate { crate_id: CrateId },
8383
}
8484

8585
let prime_caches_worker = move |db: Snapshot<RootDatabase>| {
8686
while let Ok((crate_id, crate_name)) = work_receiver.recv() {
8787
progress_sender
8888
.send(ParallelPrimeCacheWorkerProgress::BeginCrate { crate_id, crate_name })?;
8989

90-
let cancelled = Cancelled::catch(|| {
91-
// This also computes the DefMap
92-
db.import_map(crate_id);
93-
})
94-
.is_err();
90+
// This also computes the DefMap
91+
db.import_map(crate_id);
9592

96-
progress_sender
97-
.send(ParallelPrimeCacheWorkerProgress::EndCrate { crate_id, cancelled })?;
98-
99-
if cancelled {
100-
break;
101-
}
93+
progress_sender.send(ParallelPrimeCacheWorkerProgress::EndCrate { crate_id })?;
10294
}
10395

10496
Ok::<_, crossbeam_channel::SendError<_>>(())
@@ -113,11 +105,12 @@ where
113105
let crates_total = crates_to_prime.len();
114106
let mut crates_done = 0;
115107

116-
let mut is_cancelled = false;
117108
let mut crates_currently_indexing =
118109
FxHashMap::with_capacity_and_hasher(num_worker_threads as _, Default::default());
119110

120-
while !crates_to_prime.is_empty() && !is_cancelled {
111+
while !crates_to_prime.is_empty() {
112+
db.unwind_if_cancelled();
113+
121114
for crate_id in &mut crates_to_prime {
122115
work_sender
123116
.send((
@@ -129,17 +122,20 @@ where
129122

130123
let worker_progress = match progress_receiver.recv() {
131124
Ok(p) => p,
132-
Err(_) => break,
125+
Err(_) => {
126+
// our workers may have died from a cancelled task, so we'll check and re-raise here.
127+
db.unwind_if_cancelled();
128+
break;
129+
}
133130
};
134131
match worker_progress {
135132
ParallelPrimeCacheWorkerProgress::BeginCrate { crate_id, crate_name } => {
136133
crates_currently_indexing.insert(crate_id, crate_name);
137134
}
138-
ParallelPrimeCacheWorkerProgress::EndCrate { crate_id, cancelled } => {
135+
ParallelPrimeCacheWorkerProgress::EndCrate { crate_id } => {
139136
crates_currently_indexing.remove(&crate_id);
140137
crates_to_prime.mark_done(crate_id);
141138
crates_done += 1;
142-
is_cancelled = cancelled;
143139
}
144140
};
145141

@@ -150,7 +146,6 @@ where
150146
};
151147

152148
cb(progress);
153-
db.unwind_if_cancelled();
154149
}
155150
})
156151
.unwrap();

0 commit comments

Comments
 (0)