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 {