]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Don't emit invoker for async methods attributed with NoWrapper
authorRico Tzschichholz <ricotz@ubuntu.com>
Sun, 31 Jan 2021 12:04:52 +0000 (13:04 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sun, 31 Jan 2021 12:04:52 +0000 (13:04 +0100)
codegen/valaccodebasemodule.vala
codegen/valaccodemethodmodule.vala
codegen/valagasyncmodule.vala

index c69351e2ea8086568e53686ee8ec4338ed92b675..0f501fc2e76206d5e2a7230a318822f0d78df607 100644 (file)
@@ -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) {
index 9402ad6ab9d8461bcc659b989cb770b09fd34b61..ff81b2dd9cf3dfa74aeda82175c39548daab5949 100644 (file)
@@ -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);
 
index c9946599f5a0a060e5c156fedcfda7cbe8cc9a1e..36270edc3a77de390143bf750951075593a80ff9 100644 (file)
@@ -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<int,CCodeParameter> (direct_hash, direct_equal);
                                var carg_map = new HashMap<int,CCodeExpression> (direct_hash, direct_equal);