summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLauro Moura <lauromoura@gmail.com>2019-02-11 16:53:29 -0200
committerVitor Sousa <vitorsousa@expertisesolutions.com.br>2019-02-11 16:59:10 -0200
commit9277586fd8244826bdfbbc7625c3a08be71f5e06 (patch)
tree3252833738a1009969bcc280011f6f51485b2be8
parent133b659b7301c2bf577491575a5e7f455b345347 (diff)
downloadefl-9277586fd8244826bdfbbc7625c3a08be71f5e06.tar.gz
efl-csharp: Fix self in iface concrete functions
Summary: It was mistakenly being called as static functions. Fixes T7619 Test Plan: See attached testcase. Reviewers: segfaultxavi, bu5hm4n, vitor.sousa Reviewed By: vitor.sousa Subscribers: cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T7619 Differential Revision: https://phab.enlightenment.org/D7904
-rw-r--r--src/bin/eolian_mono/eolian/mono/function_definition.hh2
-rw-r--r--src/tests/efl_mono/Eo.cs13
2 files changed, 14 insertions, 1 deletions
diff --git a/src/bin/eolian_mono/eolian/mono/function_definition.hh b/src/bin/eolian_mono/eolian/mono/function_definition.hh
index 5a78bc735f..f89ac954cb 100644
--- a/src/bin/eolian_mono/eolian/mono/function_definition.hh
+++ b/src/bin/eolian_mono/eolian/mono/function_definition.hh
@@ -169,7 +169,7 @@ struct function_definition_generator
// inherited is set in the constructor, true if this instance is from a pure C# class (not generated).
if (do_super && !f.is_static)
self = "(inherited ? Efl.Eo.Globals.efl_super(" + self + ", this.NativeClass) : " + self + ")";
- else
+ else if (f.is_static)
self = name_helpers::klass_get_full_name(f.klass) + "()";
if(!as_generator
diff --git a/src/tests/efl_mono/Eo.cs b/src/tests/efl_mono/Eo.cs
index 37d4735b90..ed1d65a779 100644
--- a/src/tests/efl_mono/Eo.cs
+++ b/src/tests/efl_mono/Eo.cs
@@ -369,4 +369,17 @@ class TestConstructors
}
}
+class TestInterfaceConcrete
+{
+ // For T7619
+ public static void test_iface_concrete_methods()
+ {
+ var obj = new Dummy.TestObject();
+ Dummy.TestIface iface = Dummy.TestIfaceConcrete.static_cast(obj);
+
+ iface.IfaceProp = 1970;
+ Test.AssertEquals(iface.IfaceProp, 1970);
+ }
+}
+
}