diff --git a/src/bin/eolian/eo_generator.c b/src/bin/eolian/eo_generator.c index ce1d0ad52c..20f69a0b19 100644 --- a/src/bin/eolian/eo_generator.c +++ b/src/bin/eolian/eo_generator.c @@ -726,6 +726,8 @@ eo_source_end_generate(const Eolian_Class *class, Eina_Strbuf *buf) if ((impl_class = eolian_implement_class_get(impl_desc))) { + if (impl_class == class) + continue; fnid = eolian_implement_function_get(impl_desc, &ftype); _class_env_create(impl_class, NULL, &impl_env); funcname = eolian_function_name_get(fnid); diff --git a/src/bin/eolian/impl_generator.c b/src/bin/eolian/impl_generator.c index c91ca42d56..645982d3c4 100644 --- a/src/bin/eolian/impl_generator.c +++ b/src/bin/eolian/impl_generator.c @@ -280,6 +280,9 @@ impl_source_generate(const Eolian_Class *class, Eina_Strbuf *buffer) EINA_ITERATOR_FOREACH(itr, impl_desc) { Eolian_Function_Type ftype; + const Eolian_Class *cl = eolian_implement_class_get(impl_desc); + if (cl == class) + continue; if (!(foo = eolian_implement_function_get(impl_desc, &ftype))) { const char *name = names[eolian_implement_is_prop_get(impl_desc) diff --git a/src/lib/eolian/database_fill.c b/src/lib/eolian/database_fill.c index 4fba89b6d1..555016ba05 100644 --- a/src/lib/eolian/database_fill.c +++ b/src/lib/eolian/database_fill.c @@ -250,6 +250,7 @@ _get_impl_func(Eolian_Class *cl, Eolian_Implement *impl, return EINA_TRUE; if (strchr(imstr, '.')) return EINA_FALSE; + impl->klass = cl; *foo_id = (Eolian_Function*)eolian_class_function_get_by_name(cl, imstr, ftype); return !!*foo_id; @@ -314,6 +315,12 @@ _db_fill_implement(Eolian_Class *cl, Eolian_Implement *impl) cl->class_dtor_enable = EINA_TRUE; return 1; } + else + { + Eolian_Function *foo_id; + if (!_get_impl_func(cl, impl, ftype, &foo_id)) + return _func_error(cl, impl); + } pasttags: if (impl_name[0] == '.')