edit_algo only handled the node mutability scenario earlier, this commits supports it for token as well, making its parent mutable
diff --git a/src/tools/rust-analyzer/crates/syntax/src/syntax_editor/edit_algo.rs b/src/tools/rust-analyzer/crates/syntax/src/syntax_editor/edit_algo.rs
index f6bd992..1baba5e 100644
--- a/src/tools/rust-analyzer/crates/syntax/src/syntax_editor/edit_algo.rs
+++ b/src/tools/rust-analyzer/crates/syntax/src/syntax_editor/edit_algo.rs
@@ -215,15 +215,41 @@ struct DependentChange {
                     *node = node.clone_for_update();
                 }
             }
+            Change::Insert(_, SyntaxElement::Token(token))
+            | Change::Replace(_, Some(SyntaxElement::Token(token))) => {
+                if token.parent().is_some() {
+                    let idx = token.index();
+                    let new_parent = token.parent().unwrap().clone_subtree().clone_for_update();
+                    *token = new_parent
+                        .children_with_tokens()
+                        .nth(idx)
+                        .and_then(SyntaxElement::into_token)
+                        .unwrap();
+                }
+            }
             Change::InsertAll(_, elements)
             | Change::ReplaceWithMany(_, elements)
             | Change::ReplaceAll(_, elements) => {
                 for element in elements {
-                    if let SyntaxElement::Node(node) = element {
-                        if node.parent().is_some() {
-                            *node = node.clone_subtree().clone_for_update();
-                        } else if !node.is_mutable() {
-                            *node = node.clone_for_update();
+                    match element {
+                        SyntaxElement::Node(node) => {
+                            if node.parent().is_some() {
+                                *node = node.clone_subtree().clone_for_update();
+                            } else if !node.is_mutable() {
+                                *node = node.clone_for_update();
+                            }
+                        }
+                        SyntaxElement::Token(token) => {
+                            if token.parent().is_some() {
+                                let idx = token.index();
+                                let new_parent =
+                                    token.parent().unwrap().clone_subtree().clone_for_update();
+                                *token = new_parent
+                                    .children_with_tokens()
+                                    .nth(idx)
+                                    .and_then(SyntaxElement::into_token)
+                                    .unwrap();
+                            }
                         }
                     }
                 }