diff --git a/src/bin/eolian/eo_generator.c b/src/bin/eolian/eo_generator.c index 9826d4ae72..c4cc89c54c 100644 --- a/src/bin/eolian/eo_generator.c +++ b/src/bin/eolian/eo_generator.c @@ -661,6 +661,8 @@ eo_source_end_generate(const Eolian_Class *class, Eina_Strbuf *buf) const char *rets; char *tp = implname; + const char *names[] = { "", "getter ", "setter " }; + if ((impl_class = eolian_implement_class_get(impl_desc))) { fnid = eolian_implement_function_get(impl_desc, &ftype); @@ -673,8 +675,10 @@ eo_source_end_generate(const Eolian_Class *class, Eina_Strbuf *buf) if (!fnid) { - ERR ("Failed to generate implementation of %s - missing form super class", - eolian_implement_full_name_get(impl_desc)); + const char *name = names[eolian_implement_is_prop_get(impl_desc) + | (eolian_implement_is_prop_set(impl_desc) << 1)]; + ERR ("Failed to generate implementation of %s%s - missing form super class", + name, eolian_implement_full_name_get(impl_desc)); goto end; } diff --git a/src/bin/eolian/impl_generator.c b/src/bin/eolian/impl_generator.c index e0241990d6..c91ca42d56 100644 --- a/src/bin/eolian/impl_generator.c +++ b/src/bin/eolian/impl_generator.c @@ -276,13 +276,16 @@ impl_source_generate(const Eolian_Class *class, Eina_Strbuf *buffer) if (itr) { Eolian_Implement *impl_desc; + const char *names[] = { "", "getter ", "setter " }; EINA_ITERATOR_FOREACH(itr, impl_desc) { Eolian_Function_Type ftype; if (!(foo = eolian_implement_function_get(impl_desc, &ftype))) { - ERR ("Failed to generate implementation of %s - missing form super class", - eolian_implement_full_name_get(impl_desc)); + const char *name = names[eolian_implement_is_prop_get(impl_desc) + | (eolian_implement_is_prop_set(impl_desc) << 1)]; + ERR ("Failed to generate implementation of %s%s - missing form super class", + name, eolian_implement_full_name_get(impl_desc)); goto end; } switch (ftype) diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index 84076a71ea..4996315186 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -945,6 +945,26 @@ EAPI Eina_Bool eolian_implement_is_auto(const Eolian_Implement *impl); */ EAPI Eina_Bool eolian_implement_is_empty(const Eolian_Implement *impl); +/* + * @brief Get whether an implement references a property getter. + * + * @param[in] impl the handle of the implement + * @return EINA_TRUE when it does, EINA_FALSE when it's not. + * + * @ingroup Eolian + */ +EAPI Eina_Bool eolian_implement_is_prop_get(const Eolian_Implement *impl); + +/* + * @brief Get whether an implement references a property setter. + * + * @param[in] impl the handle of the implement + * @return EINA_TRUE when it does, EINA_FALSE when it's not. + * + * @ingroup Eolian + */ +EAPI Eina_Bool eolian_implement_is_prop_set(const Eolian_Implement *impl); + /* * @brief Get an iterator to the overriding functions defined in a class. * diff --git a/src/lib/eolian/database_implement_api.c b/src/lib/eolian/database_implement_api.c index d3c03de270..38cdd26b2b 100644 --- a/src/lib/eolian/database_implement_api.c +++ b/src/lib/eolian/database_implement_api.c @@ -121,3 +121,17 @@ eolian_implement_is_empty(const Eolian_Implement *impl) EINA_SAFETY_ON_NULL_RETURN_VAL(impl, EINA_FALSE); return impl->is_empty; } + +EAPI Eina_Bool +eolian_implement_is_prop_get(const Eolian_Implement *impl) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(impl, EINA_FALSE); + return impl->is_prop_get; +} + +EAPI Eina_Bool +eolian_implement_is_prop_set(const Eolian_Implement *impl) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(impl, EINA_FALSE); + return impl->is_prop_set; +}