efl-csharp: Fix self in iface concrete functions
authorLauro Moura <lauromoura@gmail.com>
Mon, 11 Feb 2019 18:53:29 +0000 (16:53 -0200)
committerWonki Kim <wonki_.kim@samsung.com>
Fri, 8 Mar 2019 11:49:33 +0000 (20:49 +0900)
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

src/bin/eolian_mono/eolian/mono/function_definition.hh
src/tests/efl_mono/Eo.cs

index 5a78bc7..f89ac95 100644 (file)
@@ -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
index 37d4735..ed1d65a 100644 (file)
@@ -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);
+    }
+}
+
 }