Fix default fold_ident of raw identifiers
diff --git a/codegen/src/main.rs b/codegen/src/main.rs
index 44b9d8b..5c2f683 100644
--- a/codegen/src/main.rs
+++ b/codegen/src/main.rs
@@ -849,12 +849,11 @@
}
Fields::Unit => {
if s.ast.ident == "Ident" {
- state.fold_impl.push_str(
- " Ident::new(&_i.to_string(), _visitor.fold_span(_i.span()))\n",
- );
- } else {
- state.fold_impl.push_str(" _i\n");
+ state.fold_impl.push_str(" let mut _i = _i;\n");
+ state.fold_impl.push_str(" let span = _visitor.fold_span(_i.span());\n");
+ state.fold_impl.push_str(" _i.set_span(span);\n");
}
+ state.fold_impl.push_str(" _i\n");
vec![]
}
};
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index 236acc3..14e2758 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -1596,7 +1596,10 @@
}
pub fn fold_ident<V: Fold + ?Sized>(_visitor: &mut V, _i: Ident) -> Ident {
- Ident::new(&_i.to_string(), _visitor.fold_span(_i.span()))
+ let mut _i = _i;
+ let span = _visitor.fold_span(_i.span());
+ _i.set_span(span);
+ _i
}
# [ cfg ( feature = "full" ) ]
pub fn fold_impl_item<V: Fold + ?Sized>(_visitor: &mut V, _i: ImplItem) -> ImplItem {