eolian-cxx: Make events inherit beta info from klass.

To mimic function behavior

Reviewed-by: Felipe Magno de Almeida <felipe@expertisesolutions.com.br>
Differential Revision: https://phab.enlightenment.org/D10381
This commit is contained in:
Lauro Moura 2019-10-11 21:45:03 +00:00 committed by Felipe Magno de Almeida
parent b1a1cdc701
commit 5516b06af5
3 changed files with 36 additions and 1 deletions

View File

@ -1188,7 +1188,7 @@ struct event_def
} : eina::optional<type_def>{})
, name( ::eolian_event_name_get(event))
, c_name( ::eolian_event_c_macro_get(event))
, is_beta( ::eolian_event_is_beta(event))
, is_beta( ::eolian_event_is_beta(event) || klass.is_beta)
, is_protected( ::eolian_event_scope_get(event) == EOLIAN_SCOPE_PROTECTED)
, documentation( ::eolian_event_documentation_get(event)) {}
};

View File

@ -1,3 +1,11 @@
class @beta Beta_Class extends Efl.Object
{
methods {
method_should_be_beta {
[[ Method should be beta ]]
}
}
events {
event_should_be_beta: void; [[ Event should be beta.]]
}
}

View File

@ -191,6 +191,7 @@ using efl::eolian::grammar::attributes::klass_def;
using efl::eolian::grammar::attributes::function_def;
using efl::eolian::grammar::attributes::property_def;
using efl::eolian::grammar::attributes::type_def;
using efl::eolian::grammar::attributes::event_def;
// FIXME Unify this definition some so we can share it with documentation tests.
static
@ -318,6 +319,31 @@ EFL_START_TEST(eolian_cxx_test_beta)
}
EFL_END_TEST
EFL_START_TEST(eolian_cxx_test_beta_cascading)
{
efl::eolian::eolian_init eolian_init;
efl::eolian::eolian_state eolian_state;
klass_def cls = init_test_data("beta_class.eo", "Beta_Class", eolian_state);
ck_assert(cls.is_beta);
auto func = std::find_if(cls.functions.begin(), cls.functions.end(), [](function_def const& f) {
return f.name == "method_should_be_beta";
});
ck_assert(func != cls.functions.end());
ck_assert(func->is_beta);
auto evt = std::find_if(cls.events.begin(), cls.events.end(), [](event_def const& e) {
return e.name == "event_should_be_beta";
});
ck_assert(evt != cls.events.end());
ck_assert(evt->is_beta);
}
EFL_END_TEST
void
eolian_cxx_test_binding(TCase* tc)
{
@ -333,4 +359,5 @@ eolian_cxx_test_binding(TCase* tc)
tcase_add_test(tc, eolian_cxx_test_cls_get);
tcase_add_test(tc, eolian_cxx_test_constructors);
tcase_add_test(tc, eolian_cxx_test_beta);
tcase_add_test(tc, eolian_cxx_test_beta_cascading);
}