From 5eecc0208570747b2be186ce2169832562cc65e5 Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Sun, 18 Apr 2021 21:02:21 +0200 Subject: [PATCH] codegen: Fix access to captured generics in async method of interfaces (2) See https://gitlab.gnome.org/GNOME/vala/issues/537 --- codegen/valaccodebasemodule.vala | 4 ++-- tests/objects/interface-async-captured-generic.vala | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) 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"); } } -- 2.47.2