about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2022-11-07 17:43:22 +0100
committerLukas Wirth <lukastw97@gmail.com>2022-11-07 17:45:12 +0100
commit1cb6ab89eebb76953864b3d7fae8ed068fddc5a0 (patch)
tree3cda4e7af29348199b48e394cd4c7062018994fb
parentfa70b0a86ec89ea53c0855caba42d121cbcc5697 (diff)
internal: error instead of panic on invalid file range
-rw-r--r--crates/rust-analyzer/src/from_proto.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/crates/rust-analyzer/src/from_proto.rs b/crates/rust-analyzer/src/from_proto.rs
index 936957bab48..dd433b0f4d3 100644
--- a/crates/rust-analyzer/src/from_proto.rs
+++ b/crates/rust-analyzer/src/from_proto.rs
@@ -42,8 +42,10 @@ pub(crate) fn offset(line_index: &LineIndex, position: lsp_types::Position) -> R
 pub(crate) fn text_range(line_index: &LineIndex, range: lsp_types::Range) -> Result<TextRange> {
     let start = offset(line_index, range.start)?;
     let end = offset(line_index, range.end)?;
-    let text_range = TextRange::new(start, end);
-    Ok(text_range)
+    match end < start {
+        true => Err(format_err!("Invalid Range").into()),
+        false => Ok(TextRange::new(start, end)),
+    }
 }
 
 pub(crate) fn file_id(snap: &GlobalStateSnapshot, url: &lsp_types::Url) -> Result<FileId> {