summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLauro Moura <lauromoura@expertisesolutions.com.br>2019-10-11 21:45:03 +0000
committerMike Blumenkrantz <zmike@samsung.com>2019-11-27 09:42:53 -0500
commit3d3fe1ebcf568cf49a29e637335f3fbc598daf84 (patch)
tree508d790ad7648e296f2d3fdae097bc14cef758f9
parent35aef560fbd8a62578a5e8de4e4c26ddfa70748d (diff)
downloadefl-3d3fe1ebcf568cf49a29e637335f3fbc598daf84.tar.gz
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
-rw-r--r--src/lib/eolian_cxx/grammar/klass_def.hpp2
-rw-r--r--src/tests/eolian_cxx/beta_class.eo8
-rw-r--r--src/tests/eolian_cxx/eolian_cxx_test_binding.cc27
3 files changed, 36 insertions, 1 deletions
diff --git a/src/lib/eolian_cxx/grammar/klass_def.hpp b/src/lib/eolian_cxx/grammar/klass_def.hpp
index 58b8cbd219..6679e377d2 100644
--- a/src/lib/eolian_cxx/grammar/klass_def.hpp
+++ b/src/lib/eolian_cxx/grammar/klass_def.hpp
@@ -1201,7 +1201,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)) {}
};
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 adbb8b4978..498852f28b 100644
--- a/src/tests/eolian_cxx/eolian_cxx_test_binding.cc
+++ b/src/tests/eolian_cxx/eolian_cxx_test_binding.cc
@@ -206,6 +206,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
@@ -333,6 +334,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)
{
@@ -348,4 +374,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);
}