Skip to content

Commit 02e8bb0

Browse files
committed
Return Option
1 parent 9de213c commit 02e8bb0

File tree

4 files changed

+11
-8
lines changed

4 files changed

+11
-8
lines changed

crates/ide-db/src/tests/line_index.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ fn test_every_chars() {
2929
assert_eq!(got_lin_col, lin_col);
3030

3131
for (enc, col) in [(WideEncoding::Utf16, col_utf16), (WideEncoding::Utf32, col_utf32)] {
32-
let wide_lin_col = line_index.to_wide(enc, lin_col);
33-
let got_lin_col = line_index.to_utf8(enc, wide_lin_col);
32+
let wide_lin_col = line_index.to_wide(enc, lin_col).unwrap();
33+
let got_lin_col = line_index.to_utf8(enc, wide_lin_col).unwrap();
3434
assert_eq!(got_lin_col, lin_col);
3535
assert_eq!(wide_lin_col.col, col)
3636
}

crates/rust-analyzer/src/from_proto.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ pub(crate) fn offset(line_index: &LineIndex, position: lsp_types::Position) -> R
3131
PositionEncoding::Utf8 => LineCol { line: position.line, col: position.character },
3232
PositionEncoding::Wide(enc) => {
3333
let line_col = WideLineCol { line: position.line, col: position.character };
34-
line_index.index.to_utf8(enc, line_col)
34+
line_index
35+
.index
36+
.to_utf8(enc, line_col)
37+
.ok_or_else(|| format_err!("Invalid wide col offset"))?
3538
}
3639
};
3740
let text_size =

crates/rust-analyzer/src/to_proto.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ pub(crate) fn position(line_index: &LineIndex, offset: TextSize) -> lsp_types::P
3232
match line_index.encoding {
3333
PositionEncoding::Utf8 => lsp_types::Position::new(line_col.line, line_col.col),
3434
PositionEncoding::Wide(enc) => {
35-
let line_col = line_index.index.to_wide(enc, line_col);
35+
let line_col = line_index.index.to_wide(enc, line_col).unwrap();
3636
lsp_types::Position::new(line_col.line, line_col.col)
3737
}
3838
}

lib/line-index/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,15 +156,15 @@ impl LineIndex {
156156
}
157157

158158
/// Transforms the `LineCol` with the given `WideEncoding` into a `WideLineCol`.
159-
pub fn to_wide(&self, enc: WideEncoding, line_col: LineCol) -> WideLineCol {
159+
pub fn to_wide(&self, enc: WideEncoding, line_col: LineCol) -> Option<WideLineCol> {
160160
let col = self.utf8_to_wide_col(enc, line_col.line, line_col.col.into());
161-
WideLineCol { line: line_col.line, col: col as u32 }
161+
Some(WideLineCol { line: line_col.line, col: col as u32 })
162162
}
163163

164164
/// Transforms the `WideLineCol` with the given `WideEncoding` into a `LineCol`.
165-
pub fn to_utf8(&self, enc: WideEncoding, line_col: WideLineCol) -> LineCol {
165+
pub fn to_utf8(&self, enc: WideEncoding, line_col: WideLineCol) -> Option<LineCol> {
166166
let col = self.wide_to_utf8_col(enc, line_col.line, line_col.col);
167-
LineCol { line: line_col.line, col: col.into() }
167+
Some(LineCol { line: line_col.line, col: col.into() })
168168
}
169169

170170
/// Returns an iterator over the ranges for the lines.

0 commit comments

Comments
 (0)