From: Rico Tzschichholz Date: Sun, 31 Jan 2021 12:04:52 +0000 (+0100) Subject: codegen: Don't emit invoker for async methods attributed with NoWrapper X-Git-Tag: 0.51.1~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=572ea42a8fd82275d73c28548c159cbf93dc3205;p=thirdparty%2Fvala.git codegen: Don't emit invoker for async methods attributed with NoWrapper --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index c69351e2e..0f501fc2e 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -4763,7 +4763,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { } public virtual bool generate_method_declaration (Method m, CCodeFile decl_space) { - return !add_symbol_declaration (decl_space, m, get_ccode_name (m)); + return false; } public virtual void generate_error_domain_declaration (ErrorDomain edomain, CCodeFile decl_space) { diff --git a/codegen/valaccodemethodmodule.vala b/codegen/valaccodemethodmodule.vala index 9402ad6ab..ff81b2dd9 100644 --- a/codegen/valaccodemethodmodule.vala +++ b/codegen/valaccodemethodmodule.vala @@ -153,6 +153,9 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule { if (m.is_async_callback) { return false; } + if ((m.is_abstract || m.is_virtual) && m.get_attribute ("NoWrapper") != null) { + return false; + } if (add_symbol_declaration (decl_space, m, get_ccode_name (m))) { return false; } @@ -336,7 +339,6 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule { // do not declare overriding methods and interface implementations if ((m.is_abstract || m.is_virtual || (m.base_method == null && m.base_interface_method == null)) - && m.get_attribute ("NoWrapper") == null && m.signal_reference == null) { generate_method_declaration (m, cfile); diff --git a/codegen/valagasyncmodule.vala b/codegen/valagasyncmodule.vala index c9946599f..36270edc3 100644 --- a/codegen/valagasyncmodule.vala +++ b/codegen/valagasyncmodule.vala @@ -339,6 +339,9 @@ public class Vala.GAsyncModule : GtkModule { public override bool generate_method_declaration (Method m, CCodeFile decl_space) { if (m.coroutine) { + if ((m.is_abstract || m.is_virtual) && m.get_attribute ("NoWrapper") != null) { + return false; + } if (add_symbol_declaration (decl_space, m, get_ccode_name (m))) { return false; } @@ -450,7 +453,7 @@ public class Vala.GAsyncModule : GtkModule { } } - if (m.is_abstract || m.is_virtual) { + if ((m.is_abstract || m.is_virtual) && m.get_attribute ("NoWrapper") == null) { // generate virtual function wrappers var cparam_map = new HashMap (direct_hash, direct_equal); var carg_map = new HashMap (direct_hash, direct_equal);