From: Rico Tzschichholz Date: Wed, 10 Jun 2020 12:01:05 +0000 (+0200) Subject: girwriter: Append symbol-attributes to callback field rather than its type X-Git-Tag: 0.49.1~103 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fkeep-around%2Fbfaa68db5e8bc408a137b1db669eabae2b3a85f3;p=thirdparty%2Fvala.git girwriter: Append symbol-attributes to callback field rather than its type Fixes https://gitlab.gnome.org/GNOME/vala/issues/1006 --- diff --git a/codegen/valagirwriter.vala b/codegen/valagirwriter.vala index 0198cc908..86fff038a 100644 --- a/codegen/valagirwriter.vala +++ b/codegen/valagirwriter.vala @@ -517,25 +517,31 @@ public class Vala.GIRWriter : CodeVisitor { finish_name += "_finish"; write_indent (); - buffer.append_printf("\n", m.name); + 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 ("\n"); write_indent (); - buffer.append_printf("\n", finish_name); + 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 ("\n"); } else { write_indent (); - buffer.append_printf("\n", m.name); + 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 ("\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 ("\n", get_ccode_lower_case_name (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 ("\n"); @@ -688,25 +696,31 @@ public class Vala.GIRWriter : CodeVisitor { finish_name += "_finish"; write_indent (); - buffer.append_printf("\n", m.name); + 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 ("\n"); write_indent (); - buffer.append_printf("\n", finish_name); + 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 ("\n"); } else { write_indent (); - buffer.append_printf("\n", m.name); + 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 ("\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("\n", m.name); + 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 ("\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("\n", m.name); + 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 ("\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 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 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++; diff --git a/tests/girwriter/GirTest-1.0.gir-expected b/tests/girwriter/GirTest-1.0.gir-expected index 0db2fc636..d244862d0 100644 --- a/tests/girwriter/GirTest-1.0.gir-expected +++ b/tests/girwriter/GirTest-1.0.gir-expected @@ -938,6 +938,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1000,6 +1078,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1332,6 +1464,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1418,6 +1628,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/girwriter/girtest.vala b/tests/girwriter/girtest.vala index e9b3d2ae1..23daab3d9 100644 --- a/tests/girwriter/girtest.vala +++ b/tests/girwriter/girtest.vala @@ -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 { diff --git a/tests/girwriter/girtest.vapi-expected b/tests/girwriter/girtest.vapi-expected index f92e00d05..16d5de559 100644 --- a/tests/girwriter/girtest.vapi-expected +++ b/tests/girwriter/girtest.vapi-expected @@ -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")]