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() {
|
if let Some(diagnostic_changes) = self.diagnostics.take_changes() {
|
||||||
for file_id in diagnostic_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 uri = file_id_to_url(&self.vfs.read().0, file_id);
|
||||||
let mut diagnostics =
|
let mut diagnostics =
|
||||||
self.diagnostics.diagnostics_for(file_id).cloned().collect::<Vec<_>>();
|
self.diagnostics.diagnostics_for(file_id).cloned().collect::<Vec<_>>();
|
||||||
@ -972,10 +961,20 @@ impl GlobalState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn update_diagnostics(&mut self) {
|
fn update_diagnostics(&mut self) {
|
||||||
|
let db = self.analysis_host.raw_database();
|
||||||
let subscriptions = self
|
let subscriptions = self
|
||||||
.mem_docs
|
.mem_docs
|
||||||
.iter()
|
.iter()
|
||||||
.map(|path| self.vfs.read().0.file_id(path).unwrap())
|
.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<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
tracing::trace!("updating notifications for {:?}", subscriptions);
|
tracing::trace!("updating notifications for {:?}", subscriptions);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user