@@ -177,34 +177,25 @@ pub(crate) fn generate_node_code(parsed: &ParsedNodeFn) -> syn::Result<TokenStre
177
177
178
178
let min_max_args = fields. iter ( ) . map ( |field| match field {
179
179
ParsedField :: Regular {
180
- pat_ident,
181
- number_min,
182
- number_max,
183
- ty,
184
- ..
180
+ pat_ident, number_min, number_max, ..
185
181
} => {
186
182
let name = & pat_ident. ident ;
187
- let mut tokens = quote ! { } ;
188
- let is_generic = matches ! ( ty, syn:: Type :: Path ( p) if p. path. segments. first( ) . map_or( false , |seg| seg. ident. to_string( ) . chars( ) . next( ) . unwrap( ) . is_uppercase( ) ) ) ;
189
- if !is_generic {
190
- if let Some ( min) = number_min {
191
- tokens = quote ! {
192
- #tokens
193
- let #name = if #name < ( #min as #ty) { ( #min as #ty) } else { #name } ;
194
- } ;
195
- }
183
+ let mut tokens = quote ! ( ) ;
184
+ if let Some ( min) = number_min {
185
+ tokens. extend ( quote ! {
186
+ let #name = #graphene_core:: num_traits:: clamp_min( #name, #graphene_core:: num_traits:: FromPrimitive :: from_f64( #min) . unwrap( ) ) ;
187
+ } ) ;
188
+ }
196
189
197
- if let Some ( max) = number_max {
198
- tokens = quote ! {
199
- #tokens
200
- let #name = if #name > ( #max as #ty) { ( #max as #ty) } else { #name } ;
201
- } ;
202
- }
190
+ if let Some ( max) = number_max {
191
+ tokens. extend ( quote ! {
192
+ let #name = #graphene_core:: num_traits:: clamp_max( #name, #graphene_core:: num_traits:: FromPrimitive :: from_f64( #max) . unwrap( ) ) ;
193
+ } ) ;
203
194
}
204
195
tokens
205
196
}
206
197
ParsedField :: Node { .. } => {
207
- quote ! { }
198
+ quote ! ( )
208
199
}
209
200
} ) ;
210
201
@@ -270,7 +261,7 @@ pub(crate) fn generate_node_code(parsed: &ParsedNodeFn) -> syn::Result<TokenStre
270
261
fn eval( & ' n self , __input: #input_type) -> Self :: Output {
271
262
Box :: pin( async move {
272
263
#( #eval_args) *
273
- #( #min_max_args) *
264
+ #( #min_max_args) *
274
265
self :: #fn_name( __input #( , #field_names) * ) #await_keyword
275
266
} )
276
267
}
0 commit comments