Fix panic in UnwrapSyntaxNode (#39139)
Closes #39139 Fixes ZED-1HY Release Notes: - Fixed a panic in UnwrapSyntaxNode in multi-buffers
This commit is contained in:
@@ -79,12 +79,6 @@ pub struct MultiBuffer {
|
||||
buffer_changed_since_sync: Rc<Cell<bool>>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub enum MultiOrSingleBufferOffsetRange {
|
||||
Single(Range<usize>),
|
||||
Multi(Range<usize>),
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub enum Event {
|
||||
ExcerptsAdded {
|
||||
@@ -6077,19 +6071,17 @@ impl MultiBufferSnapshot {
|
||||
pub fn syntax_ancestor<T: ToOffset>(
|
||||
&self,
|
||||
range: Range<T>,
|
||||
) -> Option<(tree_sitter::Node<'_>, MultiOrSingleBufferOffsetRange)> {
|
||||
) -> Option<(tree_sitter::Node<'_>, Range<usize>)> {
|
||||
let range = range.start.to_offset(self)..range.end.to_offset(self);
|
||||
let mut excerpt = self.excerpt_containing(range.clone())?;
|
||||
let node = excerpt
|
||||
.buffer()
|
||||
.syntax_ancestor(excerpt.map_range_to_buffer(range))?;
|
||||
let node_range = node.byte_range();
|
||||
let range = if excerpt.contains_buffer_range(node_range.clone()) {
|
||||
MultiOrSingleBufferOffsetRange::Multi(excerpt.map_range_from_buffer(node_range))
|
||||
} else {
|
||||
MultiOrSingleBufferOffsetRange::Single(node_range)
|
||||
if !excerpt.contains_buffer_range(node_range.clone()) {
|
||||
return None;
|
||||
};
|
||||
Some((node, range))
|
||||
Some((node, excerpt.map_range_from_buffer(node_range)))
|
||||
}
|
||||
|
||||
pub fn syntax_next_sibling<T: ToOffset>(
|
||||
|
||||
Reference in New Issue
Block a user