Skip to content
This repository was archived by the owner on Jun 8, 2021. It is now read-only.

Commit 3464235

Browse files
author
Guillaume Desmottes
committed
subclass: panic with error message when registering existing type
The assertion wasn't very user friendly, it deserves some explanations.
1 parent 47caa98 commit 3464235

File tree

2 files changed

+6
-8
lines changed

2 files changed

+6
-8
lines changed

src/subclass/boxed.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,9 @@ pub fn register_boxed_type<T: BoxedType>() -> ::Type {
4545
use std::ffi::CString;
4646

4747
let type_name = CString::new(T::NAME).unwrap();
48-
assert_eq!(
49-
gobject_sys::g_type_from_name(type_name.as_ptr()),
50-
gobject_sys::G_TYPE_INVALID
51-
);
48+
if gobject_sys::g_type_from_name(type_name.as_ptr()) != gobject_sys::G_TYPE_INVALID {
49+
panic!("Type {} has already been registered", type_name.to_str().unwrap());
50+
}
5251

5352
from_glib(gobject_sys::g_boxed_type_register_static(
5453
type_name.as_ptr(),

src/subclass/types.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -469,10 +469,9 @@ where
469469
};
470470

471471
let type_name = CString::new(T::NAME).unwrap();
472-
assert_eq!(
473-
gobject_sys::g_type_from_name(type_name.as_ptr()),
474-
gobject_sys::G_TYPE_INVALID
475-
);
472+
if gobject_sys::g_type_from_name(type_name.as_ptr()) != gobject_sys::G_TYPE_INVALID {
473+
panic!("Type {} has already been registered", type_name.to_str().unwrap());
474+
}
476475

477476
let type_ = from_glib(gobject_sys::g_type_register_static(
478477
<T::ParentType as StaticType>::static_type().to_glib(),

0 commit comments

Comments
 (0)