rope: Improve panic message for out of bounds anchor_at_offset (#40256)
Release Notes: - N/A *or* Added/Fixed/Improved ...
This commit is contained in:
@@ -30,6 +30,13 @@ impl Rope {
|
||||
Self::default()
|
||||
}
|
||||
|
||||
/// Checks that `index`-th byte is the first byte in a UTF-8 code point
|
||||
/// sequence or the end of the string.
|
||||
///
|
||||
/// The start and end of the string (when `index == self.len()`) are
|
||||
/// considered to be boundaries.
|
||||
///
|
||||
/// Returns `false` if `index` is greater than `self.len()`.
|
||||
pub fn is_char_boundary(&self, offset: usize) -> bool {
|
||||
if self.chunks.is_empty() {
|
||||
return offset == 0;
|
||||
|
||||
@@ -2400,7 +2400,9 @@ impl BufferSnapshot {
|
||||
} else if bias == Bias::Right && offset == self.len() {
|
||||
Anchor::MAX
|
||||
} else {
|
||||
if !self.visible_text.is_char_boundary(offset) {
|
||||
if offset > self.visible_text.len() {
|
||||
panic!("offset {} is out of bounds", offset)
|
||||
} else if !self.visible_text.is_char_boundary(offset) {
|
||||
// find the character
|
||||
let char_start = self.visible_text.floor_char_boundary(offset);
|
||||
// `char_start` must be less than len and a char boundary
|
||||
|
||||
Reference in New Issue
Block a user