From: Rico Tzschichholz Date: Sun, 18 Apr 2021 19:02:21 +0000 (+0200) Subject: codegen: Fix access to captured generics in async method of interfaces (2) X-Git-Tag: 0.50.8~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5eecc0208570747b2be186ce2169832562cc65e5;p=thirdparty%2Fvala.git codegen: Fix access to captured generics in async method of interfaces (2) See https://gitlab.gnome.org/GNOME/vala/issues/537 --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index a702d38a5..d746f6050 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -2939,9 +2939,9 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { string method_name = "get_%s_dup_func".printf (type_parameter.name.ascii_down ()); var cast_self = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (iface))); - cast_self.add_argument (new CCodeIdentifier ("self")); + cast_self.add_argument (get_this_cexpression ()); var function_call = new CCodeFunctionCall (new CCodeMemberAccess.pointer (cast_self, method_name)); - function_call.add_argument (new CCodeIdentifier ("self")); + function_call.add_argument (get_this_cexpression ()); return function_call; } diff --git a/tests/objects/interface-async-captured-generic.vala b/tests/objects/interface-async-captured-generic.vala index ae51d676a..7249fb63e 100644 --- a/tests/objects/interface-async-captured-generic.vala +++ b/tests/objects/interface-async-captured-generic.vala @@ -1,8 +1,13 @@ [GenericAccessors] interface IFoo : Object { - public async void bar (G g) { + public async void bar (owned G g) { assert (typeof (G) == typeof (string)); assert (g == "foo"); + baz (g); + } + + public void baz (owned G g) { + assert (g == "foo"); } }