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.46.11~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b3598c2b63a68ed422829228258c27489b2e93ce;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 5df7133b0..5d54f5270 100644 --- a/codegen/valagirwriter.vala +++ b/codegen/valagirwriter.vala @@ -504,25 +504,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"); @@ -533,9 +539,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"); @@ -675,25 +683,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"); @@ -706,9 +720,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"); @@ -717,9 +733,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"); @@ -1228,7 +1246,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) { @@ -1248,14 +1266,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") { @@ -1269,7 +1287,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 c4020e580..17128d3d8 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1323,6 +1455,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1409,6 +1619,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")]