felipealmeida pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=5516b06af58c4a5210b35c8c9b8e011cf5320c55

commit 5516b06af58c4a5210b35c8c9b8e011cf5320c55
Author: Lauro Moura <[email protected]>
Date:   Fri Oct 11 21:45:03 2019 +0000

    eolian-cxx: Make events inherit beta info from klass.
    
    To mimic function behavior
    
    Reviewed-by: Felipe Magno de Almeida <[email protected]>
    Differential Revision: https://phab.enlightenment.org/D10381
---
 src/lib/eolian_cxx/grammar/klass_def.hpp        |  2 +-
 src/tests/eolian_cxx/beta_class.eo              |  8 ++++++++
 src/tests/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<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 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);
 }

-- 


Reply via email to