RFC FIXME: this doesn't work well :/
In the first iteration the TYPE_TEST_IF is ambiguous (matched 2 times)
so OBJECT_CLASS_CHECK() triggers the cast exception.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
tests/unit/check-qom-interface.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/tests/unit/check-qom-interface.c b/tests/unit/check-qom-interface.c
index c43a63e8b3c..8a997220e06 100644
--- a/tests/unit/check-qom-interface.c
+++ b/tests/unit/check-qom-interface.c
@@ -115,10 +115,26 @@ static void interface_ambiguous_test(void)
{
Object *obj = object_new(TYPE_INDIRECT_IMPL);
ObjectClass *klass = object_get_class(obj);
+ GSList *list, *el;
g_assert(object_class_implements_type(klass, TYPE_TEST_IF2A));
g_assert(object_class_implements_type(klass, TYPE_TEST_IF2B));
g_assert(object_class_implements_type(klass, TYPE_TEST_IF));
+ list = object_class_get_list(TYPE_TEST_IF, true);
+ for (el = list; el; el = el->next) {
+ TestIfClass *ioc = el->data;
+ printf("%x %x\n", ioc->test, PATTERN);
+ //g_assert(ioc->test == PATTERN);
+ }
+ g_free(list);
+ list = object_class_get_list(TYPE_TEST_IF2A, true);
+ for (el = list; el; el = el->next) {
+ TestIfClass *dc = OBJECT_CLASS_CHECK(TestIfClass, el->data,
+ TYPE_TEST_IF2A);
+ printf("%x %x\n", dc->test, PATTERN);
+ //g_assert(ioc->test == PATTERN);
+ }
+ g_free(list);
object_unref(obj);
}
--
2.47.1