Fix derive(Traverse)

This commit is contained in:
Jeong YunWon
2025-07-13 12:56:59 +09:00
parent 36f4d30e01
commit 635b4afff1

View File

@@ -105,8 +105,19 @@ pub(crate) fn impl_pytraverse(mut item: DeriveInput) -> Result<TokenStream> {
let ty = &item.ident;
// Add Traverse bound to all type parameters
for param in &mut item.generics.params {
if let syn::GenericParam::Type(type_param) = param {
type_param
.bounds
.push(syn::parse_quote!(::rustpython_vm::object::Traverse));
}
}
let (impl_generics, ty_generics, where_clause) = item.generics.split_for_impl();
let ret = quote! {
unsafe impl ::rustpython_vm::object::Traverse for #ty {
unsafe impl #impl_generics ::rustpython_vm::object::Traverse for #ty #ty_generics #where_clause {
fn traverse(&self, tracer_fn: &mut ::rustpython_vm::object::TraverseFn) {
#trace_code
}