]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
girwriter: Fix position of priv field (--abi-stability) 7cb3a3f00dcbadded394a6cb9b7042b7d627bea8
authorRico Tzschichholz <ricotz@ubuntu.com>
Wed, 16 Oct 2019 09:48:44 +0000 (11:48 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Fri, 1 Nov 2019 15:54:13 +0000 (16:54 +0100)
See https://gitlab.gnome.org/GNOME/vala/issues/850

codegen/valagirwriter.vala

index a8b339a3a01ab77dd615218bddd345c32b975c75..c30384d3818700c0f3032050d9eeb31dee1436b6 100644 (file)
@@ -450,14 +450,16 @@ public class Vala.GIRWriter : CodeVisitor {
                                buffer.append_printf("</field>\n");
                        }
 
-                       write_indent ();
-                       buffer.append_printf ("<field name=\"priv\" readable=\"0\" private=\"1\">\n");
-                       indent++;
-                       write_indent ();
-                       buffer.append_printf ("<type name=\"%sPrivate\" c:type=\"%sPrivate*\"/>\n", get_gir_name (cl), get_ccode_name (cl));
-                       indent--;
-                       write_indent ();
-                       buffer.append_printf("</field>\n");
+                       if (!context.abi_stability) {
+                               write_indent ();
+                               buffer.append_printf ("<field name=\"priv\" readable=\"0\" private=\"1\">\n");
+                               indent++;
+                               write_indent ();
+                               buffer.append_printf ("<type name=\"%sPrivate\" c:type=\"%sPrivate*\"/>\n", get_gir_name (cl), get_ccode_name (cl));
+                               indent--;
+                               write_indent ();
+                               buffer.append_printf("</field>\n");
+                       }
 
                        if (cl.base_class != null && cl.base_class.is_subtype_of (gobject_type)) {
                                foreach (var p in cl.get_type_parameters ()) {
@@ -469,6 +471,17 @@ public class Vala.GIRWriter : CodeVisitor {
                        cl.accept_children (this);
                        hierarchy.remove_at (0);
 
+                       if (context.abi_stability) {
+                               write_indent ();
+                               buffer.append_printf ("<field name=\"priv\" readable=\"0\" private=\"1\">\n");
+                               indent++;
+                               write_indent ();
+                               buffer.append_printf ("<type name=\"%sPrivate\" c:type=\"%sPrivate*\"/>\n", get_gir_name (cl), get_ccode_name (cl));
+                               indent--;
+                               write_indent ();
+                               buffer.append_printf("</field>\n");
+                       }
+
                        indent--;
                        write_indent ();
                        buffer.append_printf ("</class>\n");