log::info!("queued count = {}", queue_count);
}
- let mut state_changed = false;
match event {
Event::Task(task) => {
on_task(task, &connection.sender, &mut loop_state.pending_requests, world_state);
}
Event::Vfs(task) => {
world_state.vfs.write().handle_task(task);
- state_changed = true;
}
Event::Lib(lib) => {
world_state.add_lib(lib);
&mut loop_state.subscriptions,
not,
)?;
- state_changed = true;
}
Message::Response(resp) => {
let removed = loop_state.pending_responses.remove(&resp.id);
},
};
- loop_state.pending_libraries.extend(world_state.process_changes());
+ let mut state_changed = false;
+ if let Some(changes) = world_state.process_changes() {
+ state_changed = true;
+ loop_state.pending_libraries.extend(changes);
+ }
+
while loop_state.in_flight_libraries < MAX_IN_FLIGHT_LIBS
&& !loop_state.pending_libraries.is_empty()
{
/// FIXME: better API here
pub fn process_changes(
&mut self,
- ) -> Vec<(SourceRootId, Vec<(FileId, RelativePathBuf, Arc<String>)>)> {
+ ) -> Option<Vec<(SourceRootId, Vec<(FileId, RelativePathBuf, Arc<String>)>)>> {
let changes = self.vfs.write().commit_changes();
if changes.is_empty() {
- return Vec::new();
+ return None;
}
let mut libs = Vec::new();
let mut change = AnalysisChange::new();
}
}
self.analysis_host.apply_change(change);
- libs
+ Some(libs)
}
pub fn add_lib(&mut self, data: LibraryData) {