]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
girwriter: Append symbol-attributes to callback field rather than its type bfaa68db5e8bc408a137b1db669eabae2b3a85f3
authorRico Tzschichholz <ricotz@ubuntu.com>
Wed, 10 Jun 2020 12:01:05 +0000 (14:01 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Wed, 10 Jun 2020 12:01:05 +0000 (14:01 +0200)
Fixes https://gitlab.gnome.org/GNOME/vala/issues/1006

codegen/valagirwriter.vala
tests/girwriter/GirTest-1.0.gir-expected
tests/girwriter/girtest.vala
tests/girwriter/girtest.vapi-expected

index 0198cc908c20411165e38d4795d5c9bc79790d3b..86fff038ad12aace070b78c04cea4c6b5f04a6d0 100644 (file)
@@ -517,25 +517,31 @@ public class Vala.GIRWriter : CodeVisitor {
                                                finish_name += "_finish";
 
                                                write_indent ();
-                                               buffer.append_printf("<field name=\"%s\">\n", m.name);
+                                               buffer.append_printf("<field name=\"%s\"", m.name);
+                                               write_symbol_attributes (m);
+                                               buffer.append_printf (">\n");
                                                indent++;
-                                               do_write_signature (m, "callback", true, m.name, get_ccode_name (m), m.get_async_begin_parameters (), new VoidType (), false, false);
+                                               do_write_signature (m, "callback", true, m.name, get_ccode_name (m), m.get_async_begin_parameters (), new VoidType (), false, false, false);
                                                indent--;
                                                write_indent ();
                                                buffer.append_printf ("</field>\n");
 
                                                write_indent ();
-                                               buffer.append_printf("<field name=\"%s\">\n", finish_name);
+                                               buffer.append_printf("<field name=\"%s\"", finish_name);
+                                               write_symbol_attributes (m);
+                                               buffer.append_printf (">\n");
                                                indent++;
-                                               do_write_signature (m, "callback", true, finish_name, get_ccode_finish_name (m), m.get_async_end_parameters (), m.return_type, m.tree_can_fail, false);
+                                               do_write_signature (m, "callback", true, finish_name, get_ccode_finish_name (m), m.get_async_end_parameters (), m.return_type, m.tree_can_fail, false, false);
                                                indent--;
                                                write_indent ();
                                                buffer.append_printf ("</field>\n");
                                        } else {
                                                write_indent ();
-                                               buffer.append_printf("<field name=\"%s\">\n", m.name);
+                                               buffer.append_printf("<field name=\"%s\"", m.name);
+                                               write_symbol_attributes (m);
+                                               buffer.append_printf (">\n");
                                                indent++;
-                                               do_write_signature (m, "callback", true, m.name, get_ccode_name (m), m.get_parameters (), m.return_type, m.tree_can_fail, false);
+                                               do_write_signature (m, "callback", true, m.name, get_ccode_name (m), m.get_parameters (), m.return_type, m.tree_can_fail, false, false);
                                                indent--;
                                                write_indent ();
                                                buffer.append_printf ("</field>\n");
@@ -546,9 +552,11 @@ public class Vala.GIRWriter : CodeVisitor {
                        foreach (Signal sig in cl.get_signals ()) {
                                if (sig.default_handler != null) {
                                        write_indent ();
-                                       buffer.append_printf ("<field name=\"%s\">\n", get_ccode_lower_case_name (sig));
+                                       buffer.append_printf ("<field name=\"%s\"", get_ccode_lower_case_name (sig));
+                                       write_symbol_attributes (sig);
+                                       buffer.append_printf (">\n");
                                        indent++;
-                                       write_signature (sig.default_handler, "callback", false, true);
+                                       write_signature (sig.default_handler, "callback", false, true, false);
                                        indent--;
                                        write_indent ();
                                        buffer.append_printf ("</field>\n");
@@ -688,25 +696,31 @@ public class Vala.GIRWriter : CodeVisitor {
                                        finish_name += "_finish";
 
                                        write_indent ();
-                                       buffer.append_printf("<field name=\"%s\">\n", m.name);
+                                       buffer.append_printf("<field name=\"%s\"", m.name);
+                                       write_symbol_attributes (m);
+                                       buffer.append_printf (">\n");
                                        indent++;
-                                       do_write_signature (m, "callback", true, m.name, get_ccode_name (m), m.get_async_begin_parameters (), new VoidType (), false, false);
+                                       do_write_signature (m, "callback", true, m.name, get_ccode_name (m), m.get_async_begin_parameters (), new VoidType (), false, false, false);
                                        indent--;
                                        write_indent ();
                                        buffer.append_printf ("</field>\n");
 
                                        write_indent ();
-                                       buffer.append_printf("<field name=\"%s\">\n", finish_name);
+                                       buffer.append_printf("<field name=\"%s\"", finish_name);
+                                       write_symbol_attributes (m);
+                                       buffer.append_printf (">\n");
                                        indent++;
-                                       do_write_signature (m, "callback", true, finish_name, get_ccode_finish_name (m), m.get_async_end_parameters (), m.return_type, m.tree_can_fail, false);
+                                       do_write_signature (m, "callback", true, finish_name, get_ccode_finish_name (m), m.get_async_end_parameters (), m.return_type, m.tree_can_fail, false, false);
                                        indent--;
                                        write_indent ();
                                        buffer.append_printf ("</field>\n");
                                } else {
                                        write_indent ();
-                                       buffer.append_printf("<field name=\"%s\">\n", m.name);
+                                       buffer.append_printf("<field name=\"%s\"", m.name);
+                                       write_symbol_attributes (m);
+                                       buffer.append_printf (">\n");
                                        indent++;
-                                       do_write_signature (m, "callback", true, m.name, get_ccode_name (m), m.get_parameters (), m.return_type, m.tree_can_fail, false);
+                                       do_write_signature (m, "callback", true, m.name, get_ccode_name (m), m.get_parameters (), m.return_type, m.tree_can_fail, false, false);
                                        indent--;
                                        write_indent ();
                                        buffer.append_printf ("</field>\n");
@@ -719,9 +733,11 @@ public class Vala.GIRWriter : CodeVisitor {
                                if (prop.get_accessor != null) {
                                        var m = prop.get_accessor.get_method ();
                                        write_indent ();
-                                       buffer.append_printf("<field name=\"%s\">\n", m.name);
+                                       buffer.append_printf("<field name=\"%s\"", m.name);
+                                       write_symbol_attributes (m);
+                                       buffer.append_printf (">\n");
                                        indent++;
-                                       do_write_signature (m, "callback", true, m.name, get_ccode_name (m), m.get_parameters (), m.return_type, m.tree_can_fail, false);
+                                       do_write_signature (m, "callback", true, m.name, get_ccode_name (m), m.get_parameters (), m.return_type, m.tree_can_fail, false, false);
                                        indent--;
                                        write_indent ();
                                        buffer.append_printf ("</field>\n");
@@ -730,9 +746,11 @@ public class Vala.GIRWriter : CodeVisitor {
                                if (prop.set_accessor != null && prop.set_accessor.writable) {
                                        var m = prop.set_accessor.get_method ();
                                        write_indent ();
-                                       buffer.append_printf("<field name=\"%s\">\n", m.name);
+                                       buffer.append_printf("<field name=\"%s\"", m.name);
+                                       write_symbol_attributes (m);
+                                       buffer.append_printf (">\n");
                                        indent++;
-                                       do_write_signature (m, "callback", true, m.name, get_ccode_name (m), m.get_parameters (), m.return_type, m.tree_can_fail, false);
+                                       do_write_signature (m, "callback", true, m.name, get_ccode_name (m), m.get_parameters (), m.return_type, m.tree_can_fail, false, false);
                                        indent--;
                                        write_indent ();
                                        buffer.append_printf ("</field>\n");
@@ -1241,7 +1259,7 @@ public class Vala.GIRWriter : CodeVisitor {
                return is_visibility (sym);
        }
 
-       private void write_signature (Method m, string tag_name, bool write_doc, bool instance = false) {
+       private void write_signature (Method m, string tag_name, bool write_doc, bool instance = false, bool write_attributes = true) {
                var parent = this.hierarchy.get (0);
                string name;
                if (m.parent_symbol != parent) {
@@ -1261,14 +1279,14 @@ public class Vala.GIRWriter : CodeVisitor {
                                finish_name = finish_name.substring (0, finish_name.length - "_async".length);
                        }
                        finish_name += "_finish";
-                       do_write_signature (m, tag_name, instance, name, get_ccode_name (m), m.get_async_begin_parameters (), new VoidType (), false, true);
-                       do_write_signature (m, tag_name, instance, finish_name, get_ccode_finish_name (m), m.get_async_end_parameters (), m.return_type, m.tree_can_fail, false);
+                       do_write_signature (m, tag_name, instance, name, get_ccode_name (m), m.get_async_begin_parameters (), new VoidType (), false, true, write_attributes);
+                       do_write_signature (m, tag_name, instance, finish_name, get_ccode_finish_name (m), m.get_async_end_parameters (), m.return_type, m.tree_can_fail, false, write_attributes);
                } else {
-                       do_write_signature (m, tag_name, instance, name, get_ccode_name (m), m.get_parameters (), m.return_type, m.tree_can_fail, true);
+                       do_write_signature (m, tag_name, instance, name, get_ccode_name (m), m.get_parameters (), m.return_type, m.tree_can_fail, true, write_attributes);
                }
        }
 
-       private void do_write_signature (Method m, string tag_name, bool instance, string name, string cname, List<Vala.Parameter> params, DataType return_type, bool can_fail, bool write_comment) {
+       private void do_write_signature (Method m, string tag_name, bool instance, string name, string cname, List<Vala.Parameter> params, DataType return_type, bool can_fail, bool write_comment, bool write_attributes = true) {
                write_indent ();
                buffer.append_printf ("<%s name=\"%s\"", tag_name, name);
                if (tag_name == "virtual-method") {
@@ -1282,7 +1300,9 @@ public class Vala.GIRWriter : CodeVisitor {
                if (can_fail) {
                        buffer.append_printf (" throws=\"1\"");
                }
-               write_symbol_attributes (m);
+               if (write_attributes) {
+                       write_symbol_attributes (m);
+               }
                buffer.append_printf (">\n");
                indent++;
 
index 0db2fc63658fd7b403cbb1a9357eab5c892fdd15..d244862d026a7864d9e2d5dd5751744823f2b93a 100644 (file)
                                <type name="none"/>
                        </return-value>
                </virtual-method>
+               <method name="method_valist" c:identifier="gir_test_abstract_object_test_method_valist" introspectable="0">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="vargs" transfer-ownership="none">
+                                       <type name="va_list" c:type="va_list"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="method_valist" invoker="method_valist" introspectable="0">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="vargs" transfer-ownership="none">
+                                       <type name="va_list" c:type="va_list"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
+               <method name="skipped_coroutine_method" c:identifier="gir_test_abstract_object_test_skipped_coroutine_method" introspectable="0">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async">
+                                       <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+                               </parameter>
+                               <parameter name="_callback__target" transfer-ownership="none" allow-none="1">
+                                       <type name="gpointer" c:type="void*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="skipped_coroutine_method_finish" c:identifier="gir_test_abstract_object_test_skipped_coroutine_method_finish" introspectable="0">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="_res_" transfer-ownership="none">
+                                       <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="skipped_coroutine_method" invoker="skipped_coroutine_method" introspectable="0">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async">
+                                       <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+                               </parameter>
+                               <parameter name="_callback__target" transfer-ownership="none" allow-none="1">
+                                       <type name="gpointer" c:type="void*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
+               <virtual-method name="skipped_coroutine_method_finish" invoker="skipped_coroutine_method_finish" introspectable="0">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="_res_" transfer-ownership="none">
+                                       <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
        </class>
        <record name="AbstractObjectTestClass" c:type="GirTestAbstractObjectTestClass" glib:is-gtype-struct-for="AbstractObjectTest">
                <field name="parent_class" readable="0" private="1">
                                </parameters>
                        </callback>
                </field>
+               <field name="method_valist" introspectable="0">
+                       <callback name="method_valist" c:type="method_valist">
+                               <return-value transfer-ownership="full">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                                       </parameter>
+                                       <parameter name="param" transfer-ownership="none">
+                                               <type name="gint" c:type="gint"/>
+                                       </parameter>
+                                       <parameter name="vargs" transfer-ownership="none">
+                                               <type name="va_list" c:type="va_list"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="skipped_coroutine_method" introspectable="0">
+                       <callback name="skipped_coroutine_method" c:type="skipped_coroutine_method">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                                       </parameter>
+                                       <parameter name="param" transfer-ownership="none">
+                                               <type name="gint" c:type="gint"/>
+                                       </parameter>
+                                       <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="3" scope="async">
+                                               <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+                                       </parameter>
+                                       <parameter name="_callback__target" transfer-ownership="none" allow-none="1">
+                                               <type name="gpointer" c:type="void*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="skipped_coroutine_method_finish" introspectable="0">
+                       <callback name="skipped_coroutine_method_finish" c:type="skipped_coroutine_method_finish">
+                               <return-value transfer-ownership="full">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                                       </parameter>
+                                       <parameter name="_res_" transfer-ownership="none">
+                                               <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
        </record>
        <record name="AbstractObjectTestPrivate" c:type="GirTestAbstractObjectTestPrivate" disguised="1"/>
        <class name="ImplementionTest" c:type="GirTestImplementionTest" glib:type-name="GirTestImplementionTest" glib:get-type="gir_test_implemention_test_get_type" glib:type-struct="ImplementionTestClass" parent="GObject.Object">
                                </parameter>
                        </parameters>
                </virtual-method>
+               <method name="method_valist" c:identifier="gir_test_interface_test_method_valist" introspectable="0">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="vargs" transfer-ownership="none">
+                                       <type name="va_list" c:type="va_list"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="method_valist" invoker="method_valist" introspectable="0">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="vargs" transfer-ownership="none">
+                                       <type name="va_list" c:type="va_list"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
+               <method name="skipped_coroutine_method" c:identifier="gir_test_interface_test_skipped_coroutine_method" introspectable="0">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async">
+                                       <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+                               </parameter>
+                               <parameter name="_callback__target" transfer-ownership="none" allow-none="1">
+                                       <type name="gpointer" c:type="void*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="skipped_coroutine_method_finish" c:identifier="gir_test_interface_test_skipped_coroutine_method_finish" introspectable="0">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="_res_" transfer-ownership="none">
+                                       <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="skipped_coroutine_method" invoker="skipped_coroutine_method" introspectable="0">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async">
+                                       <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+                               </parameter>
+                               <parameter name="_callback__target" transfer-ownership="none" allow-none="1">
+                                       <type name="gpointer" c:type="void*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
+               <virtual-method name="skipped_coroutine_method_finish" invoker="skipped_coroutine_method_finish" introspectable="0">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="_res_" transfer-ownership="none">
+                                       <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
                <property name="property" writable="1" construct="1">
                        <type name="gint" c:type="gint"/>
                </property>
                                </parameters>
                        </callback>
                </field>
+               <field name="method_valist" introspectable="0">
+                       <callback name="method_valist" c:type="method_valist">
+                               <return-value transfer-ownership="full">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                                       </parameter>
+                                       <parameter name="param" transfer-ownership="none">
+                                               <type name="gint" c:type="gint"/>
+                                       </parameter>
+                                       <parameter name="vargs" transfer-ownership="none">
+                                               <type name="va_list" c:type="va_list"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="skipped_coroutine_method" introspectable="0">
+                       <callback name="skipped_coroutine_method" c:type="skipped_coroutine_method">
+                               <return-value transfer-ownership="none">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                                       </parameter>
+                                       <parameter name="param" transfer-ownership="none">
+                                               <type name="gint" c:type="gint"/>
+                                       </parameter>
+                                       <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="3" scope="async">
+                                               <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+                                       </parameter>
+                                       <parameter name="_callback__target" transfer-ownership="none" allow-none="1">
+                                               <type name="gpointer" c:type="void*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="skipped_coroutine_method_finish" introspectable="0">
+                       <callback name="skipped_coroutine_method_finish" c:type="skipped_coroutine_method_finish">
+                               <return-value transfer-ownership="full">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                                       </parameter>
+                                       <parameter name="_res_" transfer-ownership="none">
+                                               <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
                <field name="get_property">
                        <callback name="get_property" c:type="get_property">
                                <return-value transfer-ownership="none">
index e9b3d2ae1f1ab9bace5d5d6545482f9984b807e3..23daab3d91f4cc361aa1f9c8eb0be5cc105eebfd 100644 (file)
@@ -71,6 +71,11 @@ namespace GirTest {
                }
                public virtual async void coroutine_async () {
                }
+               public virtual void method_valist (int param, va_list vargs) {
+               }
+               [GIR (visible = false)]
+               public virtual async void skipped_coroutine_method (int param) {
+               }
        }
 
        [GIR (visible = false)]
@@ -268,6 +273,11 @@ namespace GirTest {
                public abstract void method_int8_out (out int8 param);
 
                public abstract void method_throw () throws ErrorTest;
+
+               public abstract void method_valist (int param, va_list vargs);
+
+               [GIR (visible = false)]
+               public abstract async void skipped_coroutine_method (int param);
        }
 
        public interface PrerequisiteTest : InterfaceTest {
index f92e00d057468ac37211d4825d8a27a1d7f530e2..16d5de559e9e4b0dad3223643a1676f4c0013bf6 100644 (file)
@@ -7,6 +7,9 @@ namespace GirTest {
                public abstract void method_int8_inout (ref int8 param);
                public abstract void method_int8_out (out int8 param);
                public abstract void method_throw () throws GirTest.ErrorTest;
+               public abstract void method_valist (int param, va_list vargs);
+               [GIR (visible = false)]
+               public abstract async void skipped_coroutine_method (int param);
        }
        [CCode (cheader_filename = "girtest.h")]
        [Compact]
@@ -110,6 +113,9 @@ namespace GirTest {
        public interface InterfaceTest : GLib.Object {
                public virtual async void coroutine_async ();
                public virtual void int8_in (int8 param);
+               public virtual void method_valist (int param, va_list vargs);
+               [GIR (visible = false)]
+               public virtual async void skipped_coroutine_method (int param);
                public abstract int property { get; set construct; }
        }
        [CCode (cheader_filename = "girtest.h")]