Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/proc-macro-api/src/lib.rs')
-rw-r--r--crates/proc-macro-api/src/lib.rs18
1 files changed, 2 insertions, 16 deletions
diff --git a/crates/proc-macro-api/src/lib.rs b/crates/proc-macro-api/src/lib.rs
index e0d20c82b9..f5fcc99f14 100644
--- a/crates/proc-macro-api/src/lib.rs
+++ b/crates/proc-macro-api/src/lib.rs
@@ -194,28 +194,14 @@ impl ProcMacro {
/// On some server versions, the fixup ast id is different than ours. So change it to match.
fn change_fixup_to_match_old_server(&self, tt: &mut tt::TopSubtree) {
const OLD_FIXUP_AST_ID: ErasedFileAstId = ErasedFileAstId::from_raw(!0 - 1);
- let change_ast_id = |ast_id: &mut ErasedFileAstId| {
+ tt.change_every_ast_id(|ast_id| {
if *ast_id == FIXUP_ERASED_FILE_AST_ID_MARKER {
*ast_id = OLD_FIXUP_AST_ID;
} else if *ast_id == OLD_FIXUP_AST_ID {
// Swap between them, that means no collision plus the change can be reversed by doing itself.
*ast_id = FIXUP_ERASED_FILE_AST_ID_MARKER;
}
- };
-
- for tt in &mut tt.0 {
- match tt {
- tt::TokenTree::Leaf(tt::Leaf::Ident(tt::Ident { span, .. }))
- | tt::TokenTree::Leaf(tt::Leaf::Literal(tt::Literal { span, .. }))
- | tt::TokenTree::Leaf(tt::Leaf::Punct(tt::Punct { span, .. })) => {
- change_ast_id(&mut span.anchor.ast_id);
- }
- tt::TokenTree::Subtree(subtree) => {
- change_ast_id(&mut subtree.delimiter.open.anchor.ast_id);
- change_ast_id(&mut subtree.delimiter.close.anchor.ast_id);
- }
- }
- }
+ });
}
/// Expands the procedural macro by sending an expansion request to the server.