Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #18519 from ChayimFriedman2/invalid-offset
fix: Fix related documents diagnostics
Laurențiu Nicola 2024-11-17
parent 9224ec4 · parent 72e280a · commit ba56d9b
-rw-r--r--crates/rust-analyzer/src/handlers/request.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/crates/rust-analyzer/src/handlers/request.rs b/crates/rust-analyzer/src/handlers/request.rs
index a5c9d2823e..4975467ece 100644
--- a/crates/rust-analyzer/src/handlers/request.rs
+++ b/crates/rust-analyzer/src/handlers/request.rs
@@ -511,12 +511,16 @@ pub(crate) fn handle_document_diagnostics(
.into_iter()
.filter_map(|d| {
let file = d.range.file_id;
- let diagnostic = convert_diagnostic(&line_index, d);
if file == file_id {
+ let diagnostic = convert_diagnostic(&line_index, d);
return Some(diagnostic);
}
if supports_related {
- related_documents.entry(file).or_insert_with(Vec::new).push(diagnostic);
+ let (diagnostics, line_index) = related_documents
+ .entry(file)
+ .or_insert_with(|| (Vec::new(), snap.file_line_index(file).ok()));
+ let diagnostic = convert_diagnostic(line_index.as_mut()?, d);
+ diagnostics.push(diagnostic);
}
None
});
@@ -529,7 +533,7 @@ pub(crate) fn handle_document_diagnostics(
related_documents: related_documents.is_empty().not().then(|| {
related_documents
.into_iter()
- .map(|(id, items)| {
+ .map(|(id, (items, _))| {
(
to_proto::url(&snap, id),
lsp_types::DocumentDiagnosticReportKind::Full(