]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
girparser: add GIR name attribute to reparented types
authorEvan Nemerson <evan@coeus-group.com>
Wed, 4 Jul 2012 08:08:46 +0000 (01:08 -0700)
committerEvan Nemerson <evan@coeus-group.com>
Sat, 28 Jul 2012 17:42:47 +0000 (10:42 -0700)
vala/valagirparser.vala

index 41912de5c0ffd25cd861f062f870f31059a0d26c..8bf0284cc169f53eb04b28961344db837784285f 100644 (file)
@@ -588,6 +588,22 @@ public class Vala.GirParser : CodeVisitor {
                        return "%s.%s".printf (parent.get_full_name (), name);
                }
 
+               public string get_default_gir_name () {
+                       GLib.StringBuilder default_name = new GLib.StringBuilder ();
+
+                       for (unowned Node? node = this ; node != null ; node = node.parent) {
+                               if (node.symbol is Namespace) {
+                                       if (node.symbol.get_attribute_string ("CCode", "gir_namespace") != null) {
+                                               break;
+                                       }
+                               }
+
+                               default_name.prepend (node.name);
+                       }
+
+                       return default_name.str;
+               }
+
                public string get_gir_name () {
                        var gir_name = girdata["name"];
                        if (gir_name == null) {
@@ -1019,8 +1035,10 @@ public class Vala.GirParser : CodeVisitor {
                                }
 
                                // set gir name if the symbol has been renamed
-                               if (is_container (symbol) && !(symbol is Namespace) && name != get_gir_name ()) {
-                                       symbol.set_attribute_string ("GIR", "name", get_gir_name ());
+                               string gir_name = get_gir_name ();
+                               string default_gir_name = get_default_gir_name ();
+                               if (is_container (symbol) && !(symbol is Namespace) && (name != gir_name || gir_name != default_gir_name)) {
+                                       symbol.set_attribute_string ("GIR", "name", gir_name);
                                }
                        }