Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/syntax/src/syntax_editor/edit_algo.rs')
-rw-r--r--crates/syntax/src/syntax_editor/edit_algo.rs17
1 files changed, 14 insertions, 3 deletions
diff --git a/crates/syntax/src/syntax_editor/edit_algo.rs b/crates/syntax/src/syntax_editor/edit_algo.rs
index 55e8867a46..b769c94110 100644
--- a/crates/syntax/src/syntax_editor/edit_algo.rs
+++ b/crates/syntax/src/syntax_editor/edit_algo.rs
@@ -81,7 +81,12 @@ pub(super) fn apply_edits(editor: SyntaxEditor) -> SyntaxEdit {
"some replace change ranges intersect: {:?}",
changes
) {
- return SyntaxEdit { root, annotations: Default::default(), changed_elements: vec![] };
+ return SyntaxEdit {
+ old_root: root.clone(),
+ new_root: root,
+ annotations: Default::default(),
+ changed_elements: vec![],
+ };
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
@@ -273,7 +278,12 @@ pub(super) fn apply_edits(editor: SyntaxEditor) -> SyntaxEdit {
annotation_groups.entry(annotation).or_insert(vec![]).push(element);
}
- SyntaxEdit { root, changed_elements, annotations: annotation_groups }
+ SyntaxEdit {
+ old_root: tree_mutator.immutable,
+ new_root: root,
+ changed_elements,
+ annotations: annotation_groups,
+ }
}
fn to_owning_node(element: &SyntaxElement) -> SyntaxNode {
@@ -329,6 +339,7 @@ impl ChangedAncestor {
}
struct TreeMutator {
+ immutable: SyntaxNode,
mutable_clone: SyntaxNode,
}
@@ -336,7 +347,7 @@ impl TreeMutator {
fn new(immutable: &SyntaxNode) -> TreeMutator {
let immutable = immutable.clone();
let mutable_clone = immutable.clone_for_update();
- TreeMutator { mutable_clone }
+ TreeMutator { immutable, mutable_clone }
}
fn make_element_mut(&self, element: &SyntaxElement) -> SyntaxElement {