Skip to content

Commit cfc42a2

Browse files
committed
properties: improve conversion error inside setter
1 parent 864702e commit cfc42a2

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

glib-macros/src/properties.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,13 +415,19 @@ fn expand_set_property_fn(props: &[PropDesc]) -> TokenStream2 {
415415
field_ident,
416416
member,
417417
set,
418+
ty,
418419
..
419420
} = p;
420421

421422
let crate_ident = crate_ident_new();
422423
let enum_ident = name_to_enum_ident(name.value());
423424
let span = p.attrs_span;
424-
let expect = quote!(.expect("Can't convert glib::value to property type"));
425+
let expect = quote!(.unwrap_or_else(
426+
|err| panic!(
427+
"Invalid conversion from `glib::value::Value` to `{}` inside setter for property `{}`: {:?}",
428+
::std::any::type_name::<<#ty as #crate_ident::Property>::Value>(), #name, err
429+
)
430+
));
425431
set.as_ref().map(|set| {
426432
let body = match (member, set) {
427433
(_, MaybeCustomFn::Custom(expr)) => quote!(

0 commit comments

Comments
 (0)