Unnamed repository; edit this file 'description' to name the repository.
migrate eager to syntax editor
| -rw-r--r-- | crates/hir-expand/src/eager.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/crates/hir-expand/src/eager.rs b/crates/hir-expand/src/eager.rs index dddef17ce7..01a1244629 100644 --- a/crates/hir-expand/src/eager.rs +++ b/crates/hir-expand/src/eager.rs @@ -20,7 +20,9 @@ //! See the full discussion : <https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Eager.20expansion.20of.20built-in.20macros> use base_db::Crate; use span::SyntaxContext; -use syntax::{AstPtr, Parse, SyntaxElement, SyntaxNode, TextSize, WalkEvent, ted}; +use syntax::{ + AstPtr, Parse, SyntaxElement, SyntaxNode, TextSize, WalkEvent, syntax_editor::SyntaxEditor, +}; use syntax_bridge::DocCommentDesugarMode; use crate::{ @@ -150,7 +152,8 @@ fn eager_macro_recur( macro_resolver: &dyn Fn(&ModPath) -> Option<MacroDefId>, eager_callback: EagerCallBackFn<'_>, ) -> ExpandResult<Option<(SyntaxNode, TextSize)>> { - let original = curr.value.clone_for_update(); + let (editor, _) = SyntaxEditor::new(curr.value.clone()); + let original = curr.value.clone(); let mut replacements = Vec::new(); @@ -289,6 +292,7 @@ fn eager_macro_recur( } } - replacements.into_iter().rev().for_each(|(old, new)| ted::replace(old.syntax(), new)); + replacements.into_iter().rev().for_each(|(old, new)| editor.replace(old.syntax(), new)); + let original = editor.finish().new_root().clone(); ExpandResult { value: Some((original, offset)), err: error } } |