]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
vala: Allow more general usage of PropertyAccessor.get_method()
authorRico Tzschichholz <ricotz@ubuntu.com>
Sun, 5 Feb 2023 18:33:15 +0000 (19:33 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sun, 5 Feb 2023 18:33:15 +0000 (19:33 +0100)
codegen/valagirwriter.vala
vala/valapropertyaccessor.vala

index f7c37d735ce03aa2b9f9b5fc7f225794ac0ff868..01987d4fcba76b467aed49ef3b8a1791ab26ea57 100644 (file)
@@ -776,7 +776,7 @@ public class Vala.GIRWriter : CodeVisitor {
 
                foreach (var prop in iface.get_properties ()) {
                        if (prop.is_abstract || prop.is_virtual) {
-                               if (prop.get_accessor != null) {
+                               if (prop.get_accessor != null && prop.get_accessor.readable) {
                                        var m = prop.get_accessor.get_method ();
                                        write_indent ();
                                        buffer.append_printf("<field name=\"%s\"", m.name);
@@ -1493,14 +1493,14 @@ public class Vala.GIRWriter : CodeVisitor {
                        buffer.append_printf ("</property>\n");
                }
 
-               if (prop.get_accessor != null) {
+               if (prop.get_accessor != null && prop.get_accessor.readable) {
                        var m = prop.get_accessor.get_method ();
                        if (m != null) {
                                visit_method (m);
                        }
                }
 
-               if (prop.set_accessor != null) {
+               if (prop.set_accessor != null && prop.set_accessor.writable) {
                        var m = prop.set_accessor.get_method ();
                        if (m != null) {
                                visit_method (m);
index 979239d2ead8e064521cf54e77eb54ca1e458b32..0fbf4d32f508182cc192d6f939b09951991ca46d 100644 (file)
@@ -128,7 +128,7 @@ public class Vala.PropertyAccessor : Subroutine {
                        m.copy_attribute_string (prop, "CCode", "array_length_type");
                        m.copy_attribute_bool (prop, "CCode", "array_null_terminated");
                        m.copy_attribute_bool (prop, "CCode", "delegate_target");
-               } else if (writable) {
+               } else if (writable || construction) {
                        m = new Method ("set_%s".printf (prop.name), new VoidType(), source_reference, comment);
                        m.add_parameter (value_parameter.copy ());
                }