Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/hir-expand/src/eager.rs10
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 }
}