Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/rust-analyzer/src/diagnostics/to_proto.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/crates/rust-analyzer/src/diagnostics/to_proto.rs b/crates/rust-analyzer/src/diagnostics/to_proto.rs
index dd59923cb3..9d229c36f5 100644
--- a/crates/rust-analyzer/src/diagnostics/to_proto.rs
+++ b/crates/rust-analyzer/src/diagnostics/to_proto.rs
@@ -63,8 +63,14 @@ fn location(
// FIXME: this doesn't handle UTF16 offsets correctly
let range = lsp_types::Range::new(
- lsp_types::Position::new(span.line_start as u32 - 1, span.column_start as u32 - 1),
- lsp_types::Position::new(span.line_end as u32 - 1, span.column_end as u32 - 1),
+ lsp_types::Position::new(
+ (span.line_start as u32).saturating_sub(1),
+ (span.column_start as u32).saturating_sub(1),
+ ),
+ lsp_types::Position::new(
+ (span.line_end as u32).saturating_sub(1),
+ (span.column_end as u32).saturating_sub(1),
+ ),
);
lsp_types::Location { uri, range }