@@ -2,22 +2,19 @@ use proc_macro2::TokenStream;
2
2
use quote:: { quote_spanned, ToTokens } ;
3
3
use syn:: { parse_quote, parse_quote_spanned, DeriveInput , WhereClause } ;
4
4
5
-
6
-
7
-
8
5
/// Generate a GetTypeDependencies impl like below:
9
6
/// For type:
10
- ///
7
+ ///
11
8
/// ```rust,ignore
12
9
/// #[derive(GetTypeDependencies)]
13
10
/// #[get_type_dependencies(remote)]
14
11
/// struct TargetType<T1: CustomBoundsT1, T2: CustomBoundsT2>{
15
12
/// ...
16
13
/// }
17
14
/// ```
18
- ///
15
+ ///
19
16
/// ```rust,ignore
20
- /// impl <T1,T2> GetTypeDependencies for TargetType
17
+ /// impl <T1,T2> GetTypeDependencies for TargetType
21
18
/// where
22
19
/// T1: GetTypeDependencies,
23
20
/// T2: GetTypeDependencies,
@@ -28,7 +25,7 @@ use syn::{parse_quote, parse_quote_spanned, DeriveInput, WhereClause};
28
25
/// pub fn get_type_dependencies(registry: &mut bevy::reflect::TypeRegistry) {
29
26
/// T1::get_type_dependencies(registry);
30
27
/// T2::get_type_dependencies(registry);
31
- ///
28
+ ///
32
29
/// registry.register::<TargetType<T1::Underlying, T2::Underlying>>();
33
30
/// }
34
31
/// }
@@ -41,15 +38,15 @@ fn get_type_dependencies_from_input(derive_input: DeriveInput) -> TokenStream {
41
38
42
39
let bms_core = & args. bms_core_path ;
43
40
44
-
45
-
46
41
let ( impl_generics, type_generics, impl_where) = derive_input. generics . split_for_impl ( ) ;
47
-
48
42
49
43
let name = & derive_input. ident ;
50
-
51
-
52
- let generic_names = derive_input. generics . type_params ( ) . map ( |param| & param. ident ) . collect :: < Vec < _ > > ( ) ;
44
+
45
+ let generic_names = derive_input
46
+ . generics
47
+ . type_params ( )
48
+ . map ( |param| & param. ident )
49
+ . collect :: < Vec < _ > > ( ) ;
53
50
54
51
let type_generics_underlying = if generic_names. is_empty ( ) {
55
52
Default :: default ( )
@@ -67,20 +64,18 @@ fn get_type_dependencies_from_input(derive_input: DeriveInput) -> TokenStream {
67
64
}
68
65
} ;
69
66
70
- let mut impl_where: WhereClause = impl_where. cloned ( ) . unwrap_or_else ( || parse_quote ! { where } ) ;
67
+ let mut impl_where: WhereClause = impl_where. cloned ( ) . unwrap_or_else ( || parse_quote ! { where } ) ;
71
68
let mut recursive_registrations = Vec :: default ( ) ;
72
69
for param in derive_input. generics . type_params ( ) {
73
70
let param_name = & param. ident ;
74
71
if !args. dont_recurse {
75
- impl_where. predicates . push (
76
- parse_quote_spanned ! ( param. ident. span( ) => #param_name: GetTypeDependencies ) ,
77
- ) ;
78
- recursive_registrations. push (
79
- quote_spanned ! { param. ident. span( ) =>
80
- <#param_name as GetTypeDependencies >:: register_type_dependencies( registry) ;
81
- }
82
- ) ;
83
-
72
+ impl_where
73
+ . predicates
74
+ . push ( parse_quote_spanned ! ( param. ident. span( ) => #param_name: GetTypeDependencies ) ) ;
75
+ recursive_registrations. push ( quote_spanned ! { param. ident. span( ) =>
76
+ <#param_name as GetTypeDependencies >:: register_type_dependencies( registry) ;
77
+ } ) ;
78
+
84
79
impl_where. predicates . push (
85
80
parse_quote_spanned ! ( param. ident. span( ) => #param_name:: Underlying : bevy:: reflect:: GetTypeRegistration ) ,
86
81
) ;
@@ -90,8 +85,7 @@ fn get_type_dependencies_from_input(derive_input: DeriveInput) -> TokenStream {
90
85
)
91
86
}
92
87
}
93
-
94
-
88
+
95
89
quote_spanned ! { derive_input. ident. span( ) =>
96
90
#[ automatically_derived]
97
91
#[ allow( clippy:: needless_lifetimes) ]
@@ -112,12 +106,9 @@ pub fn get_type_dependencies(input: TokenStream) -> TokenStream {
112
106
Ok ( input) => input,
113
107
Err ( e) => return e. into_compile_error ( ) ,
114
108
} ;
115
-
116
- get_type_dependencies_from_input ( derive_input)
117
- }
118
-
119
-
120
109
110
+ get_type_dependencies_from_input ( derive_input)
111
+ }
121
112
122
113
struct Args {
123
114
bms_core_path : syn:: Path ,
@@ -151,12 +142,19 @@ impl Args {
151
142
dont_recurse = true ;
152
143
Ok ( ( ) )
153
144
} else {
154
- Err ( syn:: Error :: new_spanned ( meta. path , "unknown attribute, allowed: bms_core_path, underlying" ) )
145
+ Err ( syn:: Error :: new_spanned (
146
+ meta. path ,
147
+ "unknown attribute, allowed: bms_core_path, underlying" ,
148
+ ) )
155
149
}
156
150
} ) ?;
157
151
}
158
152
}
159
153
160
- Ok ( Self { bms_core_path, underlying, dont_recurse } )
154
+ Ok ( Self {
155
+ bms_core_path,
156
+ underlying,
157
+ dont_recurse,
158
+ } )
161
159
}
162
- }
160
+ }
0 commit comments