Don't attempt to calculate diagnostics in library crates
This commit is contained in:
parent
14b9d182d5
commit
116775bc83
@ -323,17 +323,6 @@ impl GlobalState {
|
||||
|
||||
if let Some(diagnostic_changes) = self.diagnostics.take_changes() {
|
||||
for file_id in diagnostic_changes {
|
||||
let db = self.analysis_host.raw_database();
|
||||
let source_root = db.file_source_root(file_id);
|
||||
if db.source_root(source_root).is_library {
|
||||
// Only publish diagnostics for files in the workspace, not from crates.io deps
|
||||
// or the sysroot.
|
||||
// While theoretically these should never have errors, we have quite a few false
|
||||
// positives particularly in the stdlib, and those diagnostics would stay around
|
||||
// forever if we emitted them here.
|
||||
continue;
|
||||
}
|
||||
|
||||
let uri = file_id_to_url(&self.vfs.read().0, file_id);
|
||||
let mut diagnostics =
|
||||
self.diagnostics.diagnostics_for(file_id).cloned().collect::<Vec<_>>();
|
||||
@ -972,10 +961,20 @@ impl GlobalState {
|
||||
}
|
||||
|
||||
fn update_diagnostics(&mut self) {
|
||||
let db = self.analysis_host.raw_database();
|
||||
let subscriptions = self
|
||||
.mem_docs
|
||||
.iter()
|
||||
.map(|path| self.vfs.read().0.file_id(path).unwrap())
|
||||
.filter(|&file_id| {
|
||||
let source_root = db.file_source_root(file_id);
|
||||
// Only publish diagnostics for files in the workspace, not from crates.io deps
|
||||
// or the sysroot.
|
||||
// While theoretically these should never have errors, we have quite a few false
|
||||
// positives particularly in the stdlib, and those diagnostics would stay around
|
||||
// forever if we emitted them here.
|
||||
!db.source_root(source_root).is_library
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
tracing::trace!("updating notifications for {:?}", subscriptions);
|
||||
|
Loading…
x
Reference in New Issue
Block a user