diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-11-22 14:40:56 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-11-22 14:40:56 +0100 |
| commit | 2ce727fc958d9b83f7d2f46f73e4f295594b48a6 (patch) | |
| tree | 1f4fc5be25b61a8a633311ff7ec892cacdffe288 /src/syntax/incremental.rs | |
| parent | dd9c323941260a1d08d5113dbefa023713f553da (diff) | |
Make inner node and node data private
Diffstat (limited to 'src/syntax/incremental.rs')
| -rw-r--r-- | src/syntax/incremental.rs | 38 |
1 files changed, 15 insertions, 23 deletions
diff --git a/src/syntax/incremental.rs b/src/syntax/incremental.rs index 6c9145a2..5b96f86b 100644 --- a/src/syntax/incremental.rs +++ b/src/syntax/incremental.rs @@ -1,9 +1,8 @@ use std::ops::Range; -use std::sync::Arc; use super::{ is_newline, parse, reparse_code_block, reparse_content_block, - reparse_markup_elements, InnerNode, NodeKind, Span, SyntaxNode, + reparse_markup_elements, NodeKind, Span, SyntaxNode, }; /// Refresh the given syntax node with as little parsing as possible. @@ -18,11 +17,9 @@ pub fn reparse( replaced: Range<usize>, replacement_len: usize, ) -> Range<usize> { - if let SyntaxNode::Inner(inner) = root { - let change = Change { text, replaced, replacement_len }; - if let Some(range) = try_reparse(&change, Arc::make_mut(inner), 0, true, true) { - return range; - } + let change = Change { text, replaced, replacement_len }; + if let Some(range) = try_reparse(&change, root, 0, true, true) { + return range; } let id = root.span().source(); @@ -34,7 +31,7 @@ pub fn reparse( /// Try to reparse inside the given node. fn try_reparse( change: &Change, - node: &mut InnerNode, + node: &mut SyntaxNode, mut offset: usize, outermost: bool, safe_to_replace: bool, @@ -143,20 +140,15 @@ fn try_reparse( let prev_len = child.len(); let prev_descendants = child.descendants(); - if let Some(range) = match child { - SyntaxNode::Inner(node) => try_reparse( - change, - Arc::make_mut(node), - pos.offset, - child_outermost, - safe_inside, - ), - SyntaxNode::Leaf(_) => None, - } { - let new_len = child.len(); - let new_descendants = child.descendants(); - node.update_parent(prev_len, new_len, prev_descendants, new_descendants); - return Some(range); + if !child.is_leaf() { + if let Some(range) = + try_reparse(change, child, pos.offset, child_outermost, safe_inside) + { + let new_len = child.len(); + let new_descendants = child.descendants(); + node.update_parent(prev_len, new_len, prev_descendants, new_descendants); + return Some(range); + } } let superseded_span = pos.offset..pos.offset + prev_len; @@ -215,7 +207,7 @@ fn try_reparse( /// Reparse the superseded nodes and replace them. fn replace( change: &Change, - node: &mut InnerNode, + node: &mut SyntaxNode, mode: ReparseMode, superseded_idx: Range<usize>, superseded_span: Range<usize>, |
