From 1499bad81743a4b0829c2385d2a9c5df7a82219a Mon Sep 17 00:00:00 2001 From: indirection42 Date: Mon, 12 May 2025 10:23:57 +0800 Subject: [PATCH 1/2] fix `Self` to `Impl` type replacer --- .../procedural/src/extension_decl/expand/metadata.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pvq-extension/procedural/src/extension_decl/expand/metadata.rs b/pvq-extension/procedural/src/extension_decl/expand/metadata.rs index ae9c1c7..57007be 100644 --- a/pvq-extension/procedural/src/extension_decl/expand/metadata.rs +++ b/pvq-extension/procedural/src/extension_decl/expand/metadata.rs @@ -33,7 +33,9 @@ pub fn expand_metadata(def: &Def) -> TokenStream2 { syn::ReturnType::Default => quote!(#scale_info::meta_type::<()>()), syn::ReturnType::Type(_, ty) => { let mut ty = ty.clone(); + // Replace Self::AssociatedType with Impl::AssociatedType replacer.visit_type_mut(&mut ty); + eprintln!("ty: {}", quote!(#ty)); quote!(#scale_info::meta_type::<#ty>()) } }; @@ -73,12 +75,12 @@ pub fn expand_metadata(def: &Def) -> TokenStream2 { } } -// Convert `Self::AssociatedType` to `Impl::AssociatedType` +// Replace `Self` with `Impl` in the type path struct AssociatedTypeReplacer; impl syn::visit_mut::VisitMut for AssociatedTypeReplacer { - fn visit_path_mut(&mut self, path: &mut syn::Path) { - if path.segments.len() == 2 && path.segments[0].ident == "Self" { - path.segments[0].ident = syn::Ident::new("Impl", path.segments[0].ident.span()); + fn visit_ident_mut(&mut self, ident: &mut syn::Ident) { + if ident == "Self" { + *ident = syn::Ident::new("Impl", ident.span()); } } } From 2b4c23e775b07bdd6870a3cb8cbabbf3a97db39d Mon Sep 17 00:00:00 2001 From: indirection42 Date: Mon, 12 May 2025 10:26:42 +0800 Subject: [PATCH 2/2] remove eprintln --- pvq-extension/procedural/src/extension_decl/expand/metadata.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/pvq-extension/procedural/src/extension_decl/expand/metadata.rs b/pvq-extension/procedural/src/extension_decl/expand/metadata.rs index 57007be..0dbbd9e 100644 --- a/pvq-extension/procedural/src/extension_decl/expand/metadata.rs +++ b/pvq-extension/procedural/src/extension_decl/expand/metadata.rs @@ -35,7 +35,6 @@ pub fn expand_metadata(def: &Def) -> TokenStream2 { let mut ty = ty.clone(); // Replace Self::AssociatedType with Impl::AssociatedType replacer.visit_type_mut(&mut ty); - eprintln!("ty: {}", quote!(#ty)); quote!(#scale_info::meta_type::<#ty>()) } };