From 5516b06af58c4a5210b35c8c9b8e011cf5320c55 Mon Sep 17 00:00:00 2001 From: Lauro Moura Date: Fri, 11 Oct 2019 21:45:03 +0000 Subject: [PATCH] eolian-cxx: Make events inherit beta info from klass. To mimic function behavior Reviewed-by: Felipe Magno de Almeida Differential Revision: https://phab.enlightenment.org/D10381 --- src/lib/eolian_cxx/grammar/klass_def.hpp | 2 +- src/tests/eolian_cxx/beta_class.eo | 8 ++++++ .../eolian_cxx/eolian_cxx_test_binding.cc | 27 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/lib/eolian_cxx/grammar/klass_def.hpp b/src/lib/eolian_cxx/grammar/klass_def.hpp index 5b977a6c57..0dd6779778 100644 --- a/src/lib/eolian_cxx/grammar/klass_def.hpp +++ b/src/lib/eolian_cxx/grammar/klass_def.hpp @@ -1188,7 +1188,7 @@ struct event_def } : eina::optional{}) , 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)) {} }; diff --git a/src/tests/eolian_cxx/beta_class.eo b/src/tests/eolian_cxx/beta_class.eo index ba91bf7660..be796f1ab5 100644 --- a/src/tests/eolian_cxx/beta_class.eo +++ b/src/tests/eolian_cxx/beta_class.eo @@ -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.]] + } } diff --git a/src/tests/eolian_cxx/eolian_cxx_test_binding.cc b/src/tests/eolian_cxx/eolian_cxx_test_binding.cc index ad2d48552d..ef50b58f49 100644 --- a/src/tests/eolian_cxx/eolian_cxx_test_binding.cc +++ b/src/tests/eolian_cxx/eolian_cxx_test_binding.cc @@ -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); }