Fix wrong node parameter widgets, attempt 3 at #2323 (#2334)

* WIP, for TrueDoctor to continue

* Expose first implementation type as default type in field metadata

* Cleanup

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
Dennis Kobert 2025-03-01 22:26:21 +01:00 committed by GitHub
parent e41471c088
commit fd81d043a2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 30 additions and 10 deletions

View file

@ -117,6 +117,17 @@ pub(crate) fn generate_node_code(parsed: &ParsedNodeFn) -> syn::Result<TokenStre
})
.collect();
let default_types: Vec<_> = fields
.iter()
.map(|field| match field {
ParsedField::Regular { implementations, .. } => match implementations.first() {
Some(ty) => quote!(Some(concrete!(#ty))),
_ => quote!(None),
},
_ => quote!(None),
})
.collect();
let number_min_values: Vec<_> = fields
.iter()
.map(|field| match field {
@ -292,6 +303,7 @@ pub(crate) fn generate_node_code(parsed: &ParsedNodeFn) -> syn::Result<TokenStre
description: #input_descriptions,
exposed: #exposed,
value_source: #value_sources,
default_type: #default_types,
number_min: #number_min_values,
number_max: #number_max_values,
number_mode_range: #number_mode_range_values,