1- use super :: rustpython_path_derive;
21use proc_macro2:: TokenStream as TokenStream2 ;
32use quote:: quote;
43use syn:: { Attribute , Data , DeriveInput , Expr , Field , Fields , Ident , Lit , Meta , NestedMeta } ;
@@ -109,7 +108,7 @@ impl ArgAttribute {
109108 }
110109}
111110
112- fn generate_field ( field : & Field , rp_path : & syn :: Path ) -> TokenStream2 {
111+ fn generate_field ( field : & Field ) -> TokenStream2 {
113112 let mut pyarg_attrs = field
114113 . attrs
115114 . iter ( )
@@ -132,24 +131,24 @@ fn generate_field(field: &Field, rp_path: &syn::Path) -> TokenStream2 {
132131
133132 let name = & field. ident ;
134133 let middle = quote ! {
135- . map( |x| #rp_path :: pyobject:: TryFromObject :: try_from_object( vm, x) ) . transpose( ) ?
134+ . map( |x| :: rustpython_vm :: pyobject:: TryFromObject :: try_from_object( vm, x) ) . transpose( ) ?
136135 } ;
137136 let ending = if let Some ( default) = attr. default {
138137 quote ! {
139138 . unwrap_or_else( || #default )
140139 }
141140 } else if attr. optional {
142141 quote ! {
143- . map( #rp_path :: function:: OptionalArg :: Present )
144- . unwrap_or( #rp_path :: function:: OptionalArg :: Missing )
142+ . map( :: rustpython_vm :: function:: OptionalArg :: Present )
143+ . unwrap_or( :: rustpython_vm :: function:: OptionalArg :: Missing )
145144 }
146145 } else {
147146 let err = match attr. kind {
148147 ParameterKind :: PositionalOnly | ParameterKind :: PositionalOrKeyword => quote ! {
149- #rp_path :: function:: ArgumentError :: TooFewArgs
148+ :: rustpython_vm :: function:: ArgumentError :: TooFewArgs
150149 } ,
151150 ParameterKind :: KeywordOnly => quote ! {
152- #rp_path :: function:: ArgumentError :: RequiredKeywordArgument ( tringify!( #name) )
151+ :: rustpython_vm :: function:: ArgumentError :: RequiredKeywordArgument ( tringify!( #name) )
153152 } ,
154153 } ;
155154 quote ! {
@@ -177,14 +176,10 @@ fn generate_field(field: &Field, rp_path: &syn::Path) -> TokenStream2 {
177176}
178177
179178pub fn impl_from_args ( input : DeriveInput ) -> TokenStream2 {
180- let rp_path = rustpython_path_derive ( & input) ;
181179 let fields = match input. data {
182180 Data :: Struct ( ref data) => {
183181 match data. fields {
184- Fields :: Named ( ref fields) => fields
185- . named
186- . iter ( )
187- . map ( |field| generate_field ( field, & rp_path) ) ,
182+ Fields :: Named ( ref fields) => fields. named . iter ( ) . map ( generate_field) ,
188183 Fields :: Unnamed ( _) | Fields :: Unit => unimplemented ! ( ) , // TODO: better error message
189184 }
190185 }
@@ -193,11 +188,11 @@ pub fn impl_from_args(input: DeriveInput) -> TokenStream2 {
193188
194189 let name = & input. ident ;
195190 quote ! {
196- impl #rp_path :: function:: FromArgs for #name {
191+ impl :: rustpython_vm :: function:: FromArgs for #name {
197192 fn from_args(
198- vm: & #rp_path :: VirtualMachine ,
199- args: & mut #rp_path :: function:: PyFuncArgs
200- ) -> Result <Self , #rp_path :: function:: ArgumentError > {
193+ vm: & :: rustpython_vm :: VirtualMachine ,
194+ args: & mut :: rustpython_vm :: function:: PyFuncArgs
195+ ) -> Result <Self , :: rustpython_vm :: function:: ArgumentError > {
201196 Ok ( #name { #( #fields) * } )
202197 }
203198 }
0 commit comments