path: root/src/bin/eolian_mono/eolian/mono/helpers.hh
diff options
authorLauro Moura <>2019-03-11 15:46:12 -0300
committerVitor Sousa <>2019-03-11 16:08:04 -0300
commitf29ceef5002f7ab2a0f400adbed20299737bce20 (patch)
tree2324619326073a6a55f286723802553743feb3f9 /src/bin/eolian_mono/eolian/mono/helpers.hh
parent2a003420f83134331c8b404df1905cba538cfad6 (diff)
efl-csharp: Respect beta for classes and other stuff.
Summary: In order to work around an issue with Efl.App, which is stable but inherits from Efl.Core.Command_Line, @beta interfaces/mixins in the inheritance chain are simply skipped. Also changed the class used int test for inheritance from C# Efl.Loop is stable but internally it uses a @beta class as argument to its Register() method in the constructor. When instantiating a user-defined C# subclass, the binding calls the C# override in the NativeInherit class and the marshalling fails as no code is generated for the beta class. Also moved Efl.Part test to a beta class. Efl.Part is still beta. Regarding parts, they are skipped if its class is @beta too. Also rejected all elm_* files in elm public eo files. They should get back in as they are converted to Efl.Ui.* api. An exception is elm_interface_scrollable.eo, as efl_ui_panel depends on it. Fixes T7730 Test Plan: Run tests Reviewers: vitor.sousa, segfaultxavi, felipealmeida, cedric, bu5hm4n, zmike Reviewed By: vitor.sousa Subscribers: #reviewers, #committers Tags: #efl Maniphest Tasks: T7730 Differential Revision:
Diffstat (limited to 'src/bin/eolian_mono/eolian/mono/helpers.hh')
1 files changed, 6 insertions, 1 deletions
diff --git a/src/bin/eolian_mono/eolian/mono/helpers.hh b/src/bin/eolian_mono/eolian/mono/helpers.hh
index 87a1e9d..a4bb169 100644
--- a/src/bin/eolian_mono/eolian/mono/helpers.hh
+++ b/src/bin/eolian_mono/eolian/mono/helpers.hh
@@ -102,8 +102,10 @@ std::set<attributes::klass_name, attributes::compare_klass_name_by_name> interfa
102 102
103// Returns the set of interfaces implemented by this type that haven't been implemented 103// Returns the set of interfaces implemented by this type that haven't been implemented
104// by a regular parent class. 104// by a regular parent class.
105std::set<attributes::klass_name, attributes::compare_klass_name_by_name> non_implemented_interfaces(attributes::klass_def const& cls) 105template<typename Context>
106std::set<attributes::klass_name, attributes::compare_klass_name_by_name> non_implemented_interfaces(attributes::klass_def const& cls, Context context)
106{ 107{
108 auto options = efl::eolian::grammar::context_find_tag<options_context>(context);
107 std::set<attributes::klass_name, attributes::compare_klass_name_by_name> implemented_interfaces; 109 std::set<attributes::klass_name, attributes::compare_klass_name_by_name> implemented_interfaces;
108 std::set<attributes::klass_name, attributes::compare_klass_name_by_name> interfaces; 110 std::set<attributes::klass_name, attributes::compare_klass_name_by_name> interfaces;
109 111
@@ -114,6 +116,9 @@ std::set<attributes::klass_name, attributes::compare_klass_name_by_name> non_imp
114 attributes::klass_def c(get_klass(klass, cls.unit), cls.unit); 116 attributes::klass_def c(get_klass(klass, cls.unit), cls.unit);
115 for(auto&& inherit : c.immediate_inherits) 117 for(auto&& inherit : c.immediate_inherits)
116 { 118 {
119 if (inherit.is_beta && !options.want_beta)
120 continue;
117 switch(inherit.type) 122 switch(inherit.type)
118 { 123 {
119 case attributes::class_type::mixin: 124 case attributes::class_type::mixin: