@@ -41,10 +41,7 @@ pub struct AttrArgs {
4141 flags : Option < Expr > ,
4242}
4343
44- pub fn parser ( args : AttributeArgs , mut input : ItemStruct ) -> Result < TokenStream > {
45- let args = AttrArgs :: from_list ( & args)
46- . map_err ( |e| anyhow ! ( "Unable to parse attribute arguments: {:?}" , e) ) ?;
47-
44+ fn prepare ( args : AttrArgs , mut input : ItemStruct ) -> Result < ( TokenStream , Class ) > {
4845 let mut parent = None ;
4946 let mut interfaces = vec ! [ ] ;
5047 let mut properties = HashMap :: new ( ) ;
@@ -132,6 +129,23 @@ pub fn parser(args: AttributeArgs, mut input: ItemStruct) -> Result<TokenStream>
132129 ..Default :: default ( )
133130 } ;
134131
132+ Ok ( (
133+ quote ! {
134+ #input
135+
136+ :: ext_php_rs:: class_derives!( #ident) ;
137+ } ,
138+ class,
139+ ) )
140+ }
141+
142+ pub fn parser ( args : AttributeArgs , input : ItemStruct ) -> Result < TokenStream > {
143+ let args = AttrArgs :: from_list ( & args)
144+ . map_err ( |e| anyhow ! ( "Unable to parse attribute arguments: {:?}" , e) ) ?;
145+
146+ let ident = & input. ident . clone ( ) ;
147+ let ( tokens, class) = prepare ( args, input) ?;
148+
135149 let mut state = STATE . lock ( ) ;
136150
137151 if state. built_module {
@@ -144,11 +158,7 @@ pub fn parser(args: AttributeArgs, mut input: ItemStruct) -> Result<TokenStream>
144158
145159 state. classes . insert ( ident. to_string ( ) , class) ;
146160
147- Ok ( quote ! {
148- #input
149-
150- :: ext_php_rs:: class_derives!( #ident) ;
151- } )
161+ Ok ( tokens)
152162}
153163
154164#[ derive( Debug ) ]
0 commit comments