@@ -141,7 +141,7 @@ fn find_attr<'a>(attrs: &'a [Attribute], ident: &str) -> Option<&'a Attribute> {
141
141
attr_idx ( & attrs, ident) . map ( |idx| & attrs[ idx] )
142
142
}
143
143
144
- fn gen_static_method_call ( receiver_ty : & Type , signature : & Signature ) -> TokenStream2 {
144
+ fn gen_static_method_call ( receiver : TokenStream2 , signature : & Signature ) -> TokenStream2 {
145
145
let method_ident = & signature. ident ;
146
146
147
147
let args = signature
@@ -156,7 +156,7 @@ fn gen_static_method_call(receiver_ty: &Type, signature: &Signature) -> TokenStr
156
156
_ => panic ! ( "parameter binding must be an identifier" ) ,
157
157
} ) ;
158
158
159
- quote ! { <#receiver_ty> :: #method_ident( __self #( , #args) * ) }
159
+ quote ! { #receiver :: #method_ident( __self #( , #args) * ) }
160
160
}
161
161
162
162
struct WrapperVariant {
@@ -217,8 +217,7 @@ fn implement_trait(
217
217
) {
218
218
assert ! ( pseudo_impl. items. is_empty( ) ) ;
219
219
220
- let receiver = & pseudo_impl. trait_ . as_ref ( ) . unwrap ( ) . 1 ;
221
- let trait_ty = parse2 :: < Type > ( quote ! { #receiver } ) . unwrap ( ) ;
220
+ let trait_ident = & trait_decl. ident ;
222
221
223
222
let proxy_methods = trait_decl. items . iter ( ) . map ( |i| match i {
224
223
TraitItem :: Method ( i) => {
@@ -233,7 +232,7 @@ fn implement_trait(
233
232
}
234
233
}
235
234
236
- let match_block = gen_match_block ( variants, |_| gen_static_method_call ( & trait_ty , sig) ) ;
235
+ let match_block = gen_match_block ( variants, |_| gen_static_method_call ( quote ! { #trait_ident } , sig) ) ;
237
236
let tokens = quote ! { #sig { #match_block } } ;
238
237
parse2 :: < ImplItem > ( tokens) . unwrap ( )
239
238
}
@@ -261,7 +260,8 @@ fn implement_raw(variants: &[WrapperVariant], pseudo_impl: &mut ItemImpl) {
261
260
}
262
261
263
262
let match_block = gen_match_block ( variants, |variant| {
264
- gen_static_method_call ( & variant. wrapped , & method. sig )
263
+ let ty = & variant. wrapped ;
264
+ gen_static_method_call ( quote ! { #ty } , & method. sig )
265
265
} ) ;
266
266
let body = quote ! { { #match_block } } ;
267
267
method. block = syn:: parse2 ( body) . unwrap ( ) ;
0 commit comments