From: Rico Tzschichholz Date: Sat, 30 Jan 2021 10:44:17 +0000 (+0100) Subject: girwriter: Don't emit invoker for methods attributed with NoWrapper X-Git-Tag: 0.51.1~45 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76d09043637ea70264bee6d5a072c4aa64218170;p=thirdparty%2Fvala.git girwriter: Don't emit invoker for methods attributed with NoWrapper --- diff --git a/codegen/valagirwriter.vala b/codegen/valagirwriter.vala index 0ad27ed24..afcab6ea9 100644 --- a/codegen/valagirwriter.vala +++ b/codegen/valagirwriter.vala @@ -1276,7 +1276,9 @@ public class Vala.GIRWriter : CodeVisitor { tag_name = "function"; } - write_signature (m, tag_name, true); + if (m.get_attribute ("NoWrapper") == null) { + write_signature (m, tag_name, true); + } if (m.is_abstract || m.is_virtual) { write_signature (m, "virtual-method", true, false); @@ -1343,7 +1345,9 @@ public class Vala.GIRWriter : CodeVisitor { write_indent (); buffer.append_printf ("<%s name=\"%s\"", tag_name, name); if (tag_name == "virtual-method") { - buffer.append_printf (" invoker=\"%s\"", name); + if (m.get_attribute ("NoWrapper") == null) { + buffer.append_printf (" invoker=\"%s\"", name); + } } else if (tag_name == "callback") { /* this is only used for vfuncs */ buffer.append_printf (" c:type=\"%s\"", name); diff --git a/tests/girwriter/GirTest-1.0.gir-expected b/tests/girwriter/GirTest-1.0.gir-expected index 75a6c51d0..129cdd0e3 100644 --- a/tests/girwriter/GirTest-1.0.gir-expected +++ b/tests/girwriter/GirTest-1.0.gir-expected @@ -838,6 +838,16 @@ + + + + + + + + + + @@ -1058,6 +1068,18 @@ + + + + + + + + + + + + @@ -1302,6 +1324,16 @@ + + + + + + + + + + @@ -1433,6 +1465,18 @@ + + + + + + + + + + + + @@ -1911,6 +1955,16 @@ + + + + + + + + + + @@ -2079,6 +2133,18 @@ + + + + + + + + + + + + diff --git a/tests/girwriter/girtest.vala b/tests/girwriter/girtest.vala index 18c3ba80e..72d3e8866 100644 --- a/tests/girwriter/girtest.vala +++ b/tests/girwriter/girtest.vala @@ -81,6 +81,9 @@ namespace GirTest { } internal virtual void internal_method () { } + [NoWrapper] + public virtual void no_wrapper_method () { + } } [GIR (visible = false)] @@ -280,6 +283,10 @@ namespace GirTest { [GIR (visible = false)] public void skipped_method () { } + + [NoWrapper] + public virtual void no_wrapper_method () { + } } public abstract class AbstractObjectTest : Object { @@ -297,6 +304,9 @@ namespace GirTest { public abstract async void skipped_coroutine_method (int param); internal abstract void internal_method (int8 param); + + [NoWrapper] + public abstract void no_wrapper_method (); } public interface PrerequisiteTest : InterfaceTest { diff --git a/tests/girwriter/girtest.vapi-expected b/tests/girwriter/girtest.vapi-expected index 7e78a87c0..672e0de4b 100644 --- a/tests/girwriter/girtest.vapi-expected +++ b/tests/girwriter/girtest.vapi-expected @@ -12,6 +12,8 @@ namespace GirTest { 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); + [NoWrapper] + public abstract void no_wrapper_method (); [GIR (visible = false)] public abstract async void skipped_coroutine_method (int param); } @@ -76,6 +78,8 @@ namespace GirTest { public virtual void method_with_default_impl (int8 param); public ObjectTest.new_valist (int param, va_list vargs); public ObjectTest.newv (int param, ...); + [NoWrapper] + public virtual void no_wrapper_method (); public void none_in (); public static void none_inout (ref unowned GirTest.ObjectTest obj); public static void none_out (out unowned GirTest.ObjectTest obj); @@ -119,6 +123,8 @@ namespace GirTest { public virtual async void coroutine_async (); public virtual void int8_in (int8 param); public virtual void method_valist (int param, va_list vargs); + [NoWrapper] + public virtual void no_wrapper_method (); [GIR (visible = false)] public virtual async void skipped_coroutine_method (int param); public abstract int property { get; set construct; } diff --git a/tests/girwriter/girtest.vapigen-expected b/tests/girwriter/girtest.vapigen-expected index 68bb68f90..6b66c49d9 100644 --- a/tests/girwriter/girtest.vapigen-expected +++ b/tests/girwriter/girtest.vapigen-expected @@ -14,6 +14,8 @@ namespace GirTest { public abstract void method_int8_out (out int8 param); public abstract void method_throw () throws GLib.Error; public abstract void method_valist (int param, va_list vargs); + [NoWrapper] + public abstract void no_wrapper_method (); } [CCode (cheader_filename = "girtest.h", has_type_id = false)] [Compact] @@ -104,6 +106,8 @@ namespace GirTest { public virtual void method_throw () throws GLib.Error; public void method_with_default (int i); public virtual void method_with_default_impl (int8 param); + [NoWrapper] + public virtual void no_wrapper_method (); public void none_in (); public static void none_inout (ref unowned GirTest.ObjectTest obj); public static void none_out (out unowned GirTest.ObjectTest obj); @@ -149,6 +153,8 @@ namespace GirTest { public virtual int get_property (); public virtual void int8_in (int8 param); public virtual void internal_method (); + [NoWrapper] + public virtual void no_wrapper_method (); public virtual void set_property (int value); public abstract int property { get; set construct; } }